4

Any() は Func を取り込んで、動的にフィルタを作成するにはどうすればよいですか? すなわち:

var filter = () a=> a.Text == "ok";//add the first filter
if (flag)
    filter += () a=> a.ID == 5;//add the second filter << obviously this doesn't work.

list.Any(filter);

Expression> のリストを結合するコードも見ましたが、それをFuncに変換する方法がわからないため、それが機能していません

どんな助けでも大歓迎です。

4

3 に答える 3

0

IEnumerable<Func<T,bool>>たとえば、クエリを作成して作成できます

Func<int,bool> isGreaterThanEight = x => x > 8;
Func<int,bool> isEven = x => x % 2 == 0;
Func<int,bool> hasFactorFive = x => x % 5 == 0;

IEnumerable<Func<int,bool>> rules = new List<Func<int,bool>>() 
    { isGreaterThanEight, isEven, hasFactorFive };

var nums = Enumerable.Range(1,10);

var actual = nums.Where( x => rules.Any( r => r(x) ) );

Assert.That( actual, Is.EqualTo( new[]{2,4,5,6,8,9,10} ) );
于 2013-04-26T16:27:16.540 に答える
0

このように複数のフィルターを追加できますAny

list.Any(a=>a.Text == "ok" && a.ID == 5);
于 2013-04-26T02:24:12.187 に答える