AsEnumerable and Query Syntax
本文关键字:Syntax Query and AsEnumerable | 更新日期: 2023-09-27 18:23:58
我有一个使用查询语法编写的相当复杂的Linq表达式。简化后,它看起来像:
var query =
from a in ctx.A
from b in ctx.B
where a.Bid == b.Id
select new MyType()
{
Foo = a.Foo,
Bar = b.Bar
}
我必须修改查询以在MyType的新实例上设置一个属性,这种方式无法由查询提供程序进行评估。结果集相当小,所以使用.AsEnumerable()是合理的。我在MSDN上找到了一个例子,展示了如何在一个简单的案例中做到这一点
IEnumerable<DataRow> query =
from product in products.AsEnumerable()
select product;
在更复杂的情况下,如何使用AsEnumerable()?也就是说,我如何实现这样的目标
var query =
from a in ctx.A
from b in ctx.B
where a.Bid == b.Id
AsEnumerableGoesHereSomehow
select new MyType()
{
Foo = a.SomeClientSideCalculation(),
Bar = b.Bar
}
我不想在客户端执行联接和筛选。
可以将{a=a,b=b}简化为您实际需要的属性,但您可以将其作为一个开始:
var query =(
from a in ctx.A
from b in ctx.B
where a.Bid == b.Id
select new
{
a = a,
b = b
})
.AsEnumerable()
.Select(x=>new MyType {
Foo=Something(x.a),
Bar=x.b
});