你可以返回由两个或更多不同的子类组成的IQueryable吗?这是我尝试展示我的意思.它抛出错误:
System.NotSupportedException:Union或Concat中的类型具有以不同顺序分配的成员.
var a = from oi in db.OrderItems
where oi.OrderID == ID
&& oi.ListingID != null
select new OrderItemA {
// etc
} as OrderItem;
var b = from oi in db.OrderItems
where oi.OrderID == ID
&& oi.AdID != null
select new OrderItemB {
//etc
} as OrderItem;
return a.Concat<OrderItem>(b);
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试在IEnumerable而不是IQueryable上执行concat:
return a.AsEnumerable().Concat(b.AsEnumerable());
Run Code Online (Sandbox Code Playgroud)
如果您需要IQueryable结果,您可以这样做:
return a.AsEnumerable().Concat(b.AsEnumerable()).AsQueryable();
Run Code Online (Sandbox Code Playgroud)
这样做会强制concat在内存中而不是在SQL中发生,并且任何其他操作也将在内存中发生(LINQ To Objects).
但是,与.ToList()示例不同,执行仍应延迟(使数据延迟加载).
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |