我想在我的记录集上使用多个过滤器,所以我尝试了以下
var myData = ...
var fdata = myData
.Where(x => x.Type == Domain.Model.MyType.A)
.Where(x => x.Type == Domain.Model.MyType.B)
.Where(x => x.Type == Domain.Model.MyType.C)
.ToList();
如果fdata是MyType(A,B或C)中的任何一个,我想查询数据。
答案 0 :(得分:3)
例如
var fdata = myData.Where(x => x.Type == Domain.Model.MyType.A || x.Type == Domain.Model.MyType.B || x.Type == Domain.Model.MyType.C )
答案 1 :(得分:3)
您可以编写如下代码:
var fdata = myData
.Where(x => x.Type == Domain.Model.MyType.A ||
x.Type == Domain.Model.MyType.B ||
x.Type == Domain.Model.MyType.C)
.ToList();
答案 2 :(得分:2)
很简单:
var myData = ...
var fdata = myData
.Where(x => x.Type == Domain.Model.MyType.A ||
x.Type == Domain.Model.MyType.B ||
x.Type == Domain.Model.MyType.C)
.ToList();
答案 3 :(得分:2)
var myData = ...
var fdata =
myData
.Where(x =>
x.Type == Domain.Model.MyType.A
|| x.Type == Domain.Model.MyType.B
|| x.Type == Domain.Model.MyType.C)
.ToList();
除非你需要一个列表,否则最好在最后做.ToArray()
,因为它的内存效率更高。
答案 4 :(得分:0)
如果你不喜欢||
,你可以使用......
Domain.Model.MyType[] types = new Domain.Model.MyType[] {
Domain.Model.MyType.A, Domain.Model.MyType.B, Domain.Model.MyType.C
};
var myData = ...
var fdata = myData.Join(types, x => x.Type, y => y, (x, y) => x);
...或
Domain.Model.MyType[] types = new Domain.Model.MyType[] {
Domain.Model.MyType.A, Domain.Model.MyType.B, Domain.Model.MyType.C
};
var myData = ...
var fdata = myData.Where(x => types.Contains(x.Type));
...但||
是一个很好的解决方案。