我认为我能提出这个问题的最简单方法就是举个例子:假设我有一个实体框架模型,其中“Order”实体具有“OrderLines”集合。 “OrderLines”集合表面上是OrderLine对象的集合,但我在这里使用继承,因此集合中对象的实际类型将是NoteOrderLine,ItemOrderLine等。此外,ItemOrderLine实体具有关联的“Item” “实体。
我希望能够做的是创建基于“Order”实体的LINQ查询,预取“OrderLines”集合,以及在“OrderLine”实体是的情况下预取“Item”实体实际上是“ItemOrderLine”类型。有没有人想到这个?
非常感谢。
答案 0 :(得分:2)
您可以使用投影:
var q = from o in Context.Orders
select new
{
Customer = o.CustomerName,
Lines = from l in o.Lines
let i = l as ItemOrderLine
select new
{
Quantity = l.Quantity,
Item = i.Item.Name,
ItemNo = (int?) i.Item.Number // Note below
}
};
当i
类型为l
时, NoteOrderLine
将为空。由于int
不可为空,我们必须将其转换为int?
,以便在设置i
时可以合并空ItemNo
。
您也可以使用实体类型执行此操作,但它不同。既然你没有给出你想写的那种代码的例子,我猜想。