entity framework对鉴别器做了案例

有没有办法将内部查询转换为子类?

如果我只查询单个子类,我会这样做

auctions.OfType().Where(auctionBid => auctionBid.AuctionBidProp) 

现在我想对子类的类型做一个案例

 auctions.Where(auction => (auction is AuctionBid) && ((AuctionBid) auction).Prop == 1 || (auction is AuctionBuy) && ((AuctionBuy) auction).Prop == 1) 

有没有办法做到这一点?

当然上面的行给出了一个错误:LINQ to Entities仅支持转换EDM原语或枚举类型。

我看到的唯一选项是分别查询子类型并连接结果:

 auctions.OfType() .Where(auctionBid => auctionBid.AuctionBidProp == 1) .Cast .Concat(auctions.OfType() .Where(auctionBuy => auctionBuy.AuctionBidProp == 1) ) .OrderBy(ab => ab.Prop1) .Skip(pages * pageSize) .Take(pageSize) 

这将生成UNION ALL查询。 与手工制作的SQL相比,这不是最有效的方法,但可能是可接受的(您必须尝试)。