实体框架内联表不是第一个或默认的

时间:2014-09-16 14:37:00

标签: vb.net linq entity-framework entity-framework-6

我有以下查询。

Dim p = From it In LiveRmis.product_detail
        Where it.POS_CODE = Barcode And it.WHL_SKU_LOCATION.FirstOrDefault.WHL_LEVEL_DETAIL.WHL_CODE_CHAIN.Contains("KIN")
        Select it

如果我的结果不是WHL_SKU_LOCATION中的第一行或默认行,会发生什么?如果我删除了firstordefault参数,那么我就无法访问以下链表。

这基本上会循环遍历WHL_LEVEL_DETAIL中的可能行,直到找到包含KIN的代码链或者只返回未找到的代码链?

这是否是正确的方法呢?

1 个答案:

答案 0 :(得分:0)

你想做什么? 您的产品详细信息似乎有多个WHL_SKULOCATION 并且您的WHL_SKULOCATION有1个WHL_LEVEL_DETAIL。 如果你想获得一个至少有1个带有“KIN”链的WHL_SKULOCATION的product_detail,你可以这样写下你的陈述:

Dim p = From it In LiveRmis.product_detail
        Where it.POS_CODE = Barcode 
        And it.WHL_SKU_LOCATION.Any(wsl=> wsl.WHL_LEVEL_DETAIL.WHL_CODE_CHAIN.Contains("KIN")
        Select it

请注意,您使用的firstOrDefault没有条件(例如firstOrDefault(t => t.ID = 1)),因此它会真正为您找到第一个找到的WHL_SKU_LOCATION。
如果每个product_detail只有1个WHL_SKU_LOCATION,那么您需要修复数据上下文来表示这一点。