如何编写LINQ语句以从动态列表中获取具有特定扩展名的文件? [英] How to write a LINQ statement to get files with specific extensions from a dynamic list?
本文介绍了如何编写LINQ语句以从动态列表中获取具有特定扩展名的文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个动态对象列表
List<dynamic> myDynamicList;
其中一项看起来类似于以下内容:
where one item would look similar to below:
dynamic d = new ExpandoObject();
d.FileName = "SomeLibrary.dll";
d.ClientCode = "XX";
如果我想获取所有扩展名为.dll的文件,则可以使用LINQ,如下所示:
If I want to get all files whose extensions are .dll, I would use LINQ as follows:
var libraries = myDynamicList.Where(d => Path.GetExtension(d.FileName) == ".dll")
.Select(d => d.FileName);
但是,我真正想做的是获取所有扩展名为 .dll 或 .exe 的文件.我不想在FileName上使用OR逻辑,因为我想在列表或数组中定义扩展名.我将如何使用LINQ做到这一点?
However, what I really want to do is get all files whose extensions are .dll or .exe. I don't want to use OR logic on the FileName because I would like to define the extensions in a list or an array. How would I accomplish that with LINQ?
推荐答案
You can use a list to save all the extension that you need and use Contains
extension method in your query:
var list=new List<string>(){".dll", ".exe"};
var libraries = myDynamicList.Where(d => list.Contains(Path.GetExtension(d.FileName)))
.Select(d => d.FileName);
您还可以使用 Any
扩展方法:
You can also use Any
extension method:
var libraries = myDynamicList.Where(d => list.Any(e=>e==Path.GetExtension(d.FileName)))
.Select(d => d.FileName);
这篇关于如何编写LINQ语句以从动态列表中获取具有特定扩展名的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文