Reputation: 14205
I want to use multiple filter on my recordset, so I tried with following
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();
I want to query data if fdata is any of this MyType (A, B or C).
Upvotes: 2
Views: 107
Reputation: 962
If you don't like ||
you can use...
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);
or...
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));
...but ||
is good solution.
Upvotes: 0
Reputation: 1794
You can write the code like that:
var fdata = myData
.Where(x => x.Type == Domain.Model.MyType.A ||
x.Type == Domain.Model.MyType.B ||
x.Type == Domain.Model.MyType.C)
.ToList();
Upvotes: 3
Reputation: 5807
It's simple:
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();
Upvotes: 2
Reputation: 378
For example
var fdata = myData.Where(x => x.Type == Domain.Model.MyType.A || x.Type == Domain.Model.MyType.B || x.Type == Domain.Model.MyType.C )
Upvotes: 3
Reputation: 117175
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();
You are better off doing a .ToArray()
at the end, unless you need a list, as it is more memory efficient.
Upvotes: 2