我有以下查询。
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的代码链或者只返回未找到的代码链?
这是否是正确的方法呢?
答案 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,那么您需要修复数据上下文来表示这一点。