我有一个动态对象列表
<%= f.text_area ... %>
其中一个项目看起来类似于下面的内容:
List<dynamic> myDynamicList;
如果我想获得扩展名为.dll的所有文件,我会按如下方式使用LINQ:
dynamic d = new ExpandoObject();
d.FileName = "SomeLibrary.dll";
d.ClientCode = "XX";
但是,我真正想做的是获取扩展名为 .dll 或 .exe 的所有文件。我不想在FileName上使用OR逻辑,因为我想在列表或数组中定义扩展。如何使用LINQ实现这一目标?
答案 0 :(得分:3)
您可以使用列表保存所需的所有扩展程序,并在查询中使用Contains
扩展名方法:
var list=new List<string>(){".dll", ".exe"};
var libraries = myDynamicList.Where(d => list.Contains(Path.GetExtension(d.FileName)))
.Select(d => d.FileName);
您还可以使用Any
扩展方法:
var libraries = myDynamicList.Where(d => list.Any(e=>e==Path.GetExtension(d.FileName)))
.Select(d => d.FileName);
答案 1 :(得分:0)
web.config
<configuration>
....
<appSettings>
<add key="ExtensionArray" value="dll,exe"/>
</appSettings>
....
</configuration>
C# snippet
string ExtensionArray== WebConfigurationManager.AppSettings["Extension"];
var list=ExtensionArray.Split(',').ToList<string>();
var libraries = myDynamicList.Where(d => list.Any(e=>e==Path.GetExtension(d.FileName)))
.Select(d => d.FileName);