我有一个列表<Obj1>在WCF服务中创建。 Prop3实际上是作为IQueryable
实现的,但是是IEnumerable
,因为我需要将已解析的查询通过线路传递回来,因为从WCF返回值时会丢失上下文,并且存在问题。为了性能的原因,我希望能够在sql server上立即运行Prop3中的所有查询。目前,我正在做list.ForEach(o => o.Prop3 = o.Prop3.ToArray())
,但这显然会一次运行这些查询。有什么办法可以将所有内容发送到sql server来同时处理所有内容吗?带有IQueryable属性的Linq to Entities对象同时运行所有查询
一两件事,不是很明显:
builder.CreateObject returns an IQueryable<Obj1>
public IEnumerable<Obj1> CreateListOfObjects(IQueryable<Entity> query)
{
List<Obj1> list = new List<Obj1>();
foreach(var builder in Builders)
list.AddRange(builder.CreateObject(query));
}
list.ForEach(o => o.Prop3 = o.Prop3.ToArray());
return list.ToArray();
}
public class Obj1
{
public string Prop1 {get;set;}
public string Prop2 {get;set;}
public IEnumerable<Obj2> Prop3 {get;set;}
}
请通过SO的可用工具编辑其余问题。 –