C#:如何优雅地将多个条件传递给 Equals()
我是 C# 新手,我正在尝试编写一个从 FileInfo 列表中选择文件类型的程序。 到目前为止,我有一些类似的内容:
List<FileInfo> files = new List<FileInfo>();
IEnumerable<FileInfo> result = files.Where(f=>f.Extension.Equals(".jpg", StringComparison.InvariantCultureIgnoreCase)||
f.Extension.Equals(".gif", StringComparison.InvariantCultureIgnoreCase) );
等
显然我对这个解决方案不满意,但我不知道如何在一次调用中做到这一点。
更好的方法是什么?
I'm new to C#, and I'm trying to write a program that selects file types from a FileInfo list.
So far I have something along the lines of:
List<FileInfo> files = new List<FileInfo>();
IEnumerable<FileInfo> result = files.Where(f=>f.Extension.Equals(".jpg", StringComparison.InvariantCultureIgnoreCase)||
f.Extension.Equals(".gif", StringComparison.InvariantCultureIgnoreCase) );
etc
Obviously I'm not happy with this solution, but I don't know how to do this otherwise in a single call.
What's the better way to go about it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
也许Enumerable.Contains。只需首先将扩展名标准化为小写(或大写)即可。
编辑,我最近实际上使用了隐式方法到函数的转换,所以我想提一下:
Perhaps Enumerable.Contains. Just normalize the extension to lower (or upper) case first.
Edit, I've actually used the implicit method-to-function conversions recently, so I feel like mentioning it:
啊 会打败我
Ahh Will just beat me
像这样实现你自己的扩展方法:
Implement your own extension method like so:
不需要引入扩展方法,无论如何它都是 Linq 中内置的:
输出:
你甚至可以这样做(至少在 Mono 上测试过,我现在在 Mono 中):
Rob Conery 是这样解释的: http://blog.wekeroad.com/2008/ 02/27/使用 linq-to-sql 创建查询/
No need to introduce an extension method, it's built-in in Linq anyway:
Output:
You can even do this(at least as tested on Mono, I'm in Mono now):
Here's how Rob Conery explains it: http://blog.wekeroad.com/2008/02/27/creating-in-queries-with-linq-to-sql/