我需要一些帮助来构建LINQ表达式。我倾向于使用Lambda语法。
我有2张桌子
OrderItem >- LibraryItem
OrderItem有许多列:
Id
FkLibraryItemId
Text
FkOrderId
LibraryItem有许多列:
Id
Text
Type
通常在选择“OrderItem”时,会选择“库项目”。 “Id”和“Text”值放在项目记录中。
有时,用户可能会添加一个“OrderItem”,而不需要存储在“LibraryItem”表中。它只是存储在“OrderItem”中,但没有“FkLibraryItemId”。所以我在“OrderItem”中有“LibraryItem”中不存在的记录。
除了相关订单ID的“OrderItem”记录之外,我还需要LINQ提取“Type = X”的所有相关“LibraryItem”记录。
非常感谢提前。
更新:
我想我说的是:
LibraryItem.Select(new{Id,Text}).Union(Order.Select(new{Id, Text})
答案 0 :(得分:1)
context.OrderItems.Include("LibraryItems")
.Where(o => o.OrderId == orderId
&&(o.LibraryItem != null ? o.LibraryItem.Type == "X" : true))
Linq-to-SQL对Include
有不同的语法,它基本上急于加载引用对象(可能是LoadWith
,我现在不记得了。)
实际上你也可以用左内连接来做。