如何编写LINQ语句以从动态列表中获取具有特定扩展名的文件? [英] How to write a LINQ statement to get files with specific extensions from a dynamic list?

查看:65
本文介绍了如何编写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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆