你可以返回由两个或更多不同的子类组成的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(b);
小智.. 5
尝试在IEnumerable而不是IQueryable上执行concat:
return a.AsEnumerable().Concat(b.AsEnumerable());
如果您需要IQueryable结果,您可以这样做:
return a.AsEnumerable().Concat(b.AsEnumerable()).AsQueryable();
这样做会强制concat在内存中而不是在SQL中发生,并且任何其他操作也将在内存中发生(LINQ To Objects).
但是,与.ToList()示例不同,执行仍应延迟(使数据延迟加载).
尝试在IEnumerable而不是IQueryable上执行concat:
return a.AsEnumerable().Concat(b.AsEnumerable());
如果您需要IQueryable结果,您可以这样做:
return a.AsEnumerable().Concat(b.AsEnumerable()).AsQueryable();
这样做会强制concat在内存中而不是在SQL中发生,并且任何其他操作也将在内存中发生(LINQ To Objects).
但是,与.ToList()示例不同,执行仍应延迟(使数据延迟加载).