我想在IQueryable查询上有一个选择器,它将在查询执行时动态构建:
IQueryable<Row> query =
from row in table
select <byDynamicSelector>
<byDynamicSelector> = row => new Row { Value1 = row.Value1, Value2 = 0 };
Row[] rows1 = query.ToArray(); //Here I will get all the rows with Value2 = 0
<byDynamicSelector> = row => new Row { Value1 = 0, Value2 = row.Value2 };
Row[] rows2 = query.ToArray(); //Here I will get all the rows with Value1 = 0
由于查询实际上是由第三方代码执行的,因此我需要能够在实际执行之前更改选择器。
我该怎么做? 感谢。
其他说明:
Altough我被建议使用可以动态构建的表达式树,它们在任何进一步的执行之前只构建一次。 我需要的是在任何执行之前构建动态投影(选择)。这是因为我需要在查询执行时知道不同的投影。
我被建议实现我自己的IQueryProvider
来实现这一点,但是只注入我想要的投影的最简单方法是什么?