LINQ,使用映射过滤掉附件

时间:2012-05-10 09:47:08

标签: c# linq list filter lambda

我有一个映射列表 具有属性和值

我有一份附件清单 典型的文件信息。

我想做的是搜索附件并确保文件名包含 txt或xls格式。

public class Mapping
{
public int Id { get; set; }
public string Property { get; set; }
public string Value { get; set; }
}

public class file
{
public byte[] data {get;set;}
public string filename{get;set;}
}

我将在LIST中得到结果

var mappings = new List<Mapping>(){
new Mapping{Property="Filter", Value="txt"},
new Mapping{Property="Filter", Value="xls"}

};

   var files = new List<file>();




var filterdFiles = files.Where(x=> mappings.All(m=>x.filename.contains(m.Value)))

但我没有得到任何结果所以我认为Linq是错的,任何有大师经验的人?

2 个答案:

答案 0 :(得分:2)

试试这个:

var filterdFiles = files
                   .Where(x=> 
                          mappings.Any(m=>x.filename.contains(m.Value)))

答案 1 :(得分:1)

我认为这就是你想要的:

var filterdFiles = files.Where(x => mappings.Where(m => m.Property == "Filter")
                                            .Any(m => x.filename.Contains(m.Value)));