我有一个在 WCF 服务中创建的 List<Obj1>。Prop3 实际上是作为 实现的IQueryable
,但是是IEnumerable
因为我需要通过网络将已解析的查询传回,因为从 WCF 返回值时上下文会丢失,这就是问题所在。出于性能原因,我希望能够在 sql server 上一次运行 Prop3 中的所有查询。目前,我正在做list.ForEach(o => o.Prop3 = o.Prop3.ToArray())
,但这显然一次运行这些查询。有没有办法将所有内容发送到 sql server 一次处理?
不明显的一件事:
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;}
}