如何将嵌套的不存在查询转换为LINQ
知道如何将其转换为linq吗如何将嵌套的不存在查询转换为LINQ,linq,tsql,Linq,Tsql,知道如何将其转换为linq吗 SELECT DISTINCT PartNumber AS [PartNumber That Includes EVERY ItemNumber Listed in @RequiredItemsTable] FROM Part.BillsOfMaterialsFlattened AS bom1 WHERE NOT EXISTS (SELECT * FROM @RequiredItemsTable w WH
SELECT DISTINCT PartNumber AS [PartNumber That Includes EVERY ItemNumber Listed in @RequiredItemsTable]
FROM Part.BillsOfMaterialsFlattened AS bom1
WHERE NOT EXISTS
(SELECT *
FROM @RequiredItemsTable w
WHERE NOT EXISTS
(SELECT *
FROM Part.BillsOfMaterialsFlattened AS bom2
WHERE (bom1.PartNumber = bom2.PartNumber)
AND (bom2.ItemNumber = w.ItemNumber)));
我在这个网站上看到了几个例子,试图模仿它们……但到目前为止还没有达到目的
谢谢
下面是一个表格示例,说明我希望通过linq实现的目标。前面的T-SQL实现了这一点
Part.BillsOfMaterialsFlattened
PartNumber ItemNumber
10041047 10034480
10041047 10041090
10041047 10041091
10041048 10034480
10041048 10041091
10041049 10034650
10041049 10041090
10041049 10041091
10041050 10034650
10041050 10041091
10041061 10001331
10041061 10001422
@RequiredItemsTable
ItemNumber
10041090
10041091
希望LINQ语句生成IQueryable
以下linq实现了这一点:
var requiredItems = criteria.BomItemsIncluded.AsQueryable();
var partNumbers = (from b in _db.BillsOfMaterialsFlatteneds
group b by b.PartNumber into g
where requiredItems.All(r => g.Select(_ => _.ItemNumber).Contains(r))
select g.Key).Distinct();
尝试跟随这篇文章:我尝试跟随这篇文章中概述的技术:使用这段代码…我有太多的行被注释掉了,我不确定哪一组完全模仿了这项技术。我还看了这篇文章:我对它将代码重组为可搜索谓词的技术感兴趣。我以前从未听说过“sargable”这个词(我有机械工程背景)。我想要一个非常高效的linq查询。这个网站上的限制对我来说似乎很奇怪。上帝禁止你在写评论时站起来泄密。说真的,最多5分钟来编辑你的评论。最后,我试着跟随乔·塞尔科的分工,在这里发布了余数技巧:
var requiredItems = criteria.BomItemsIncluded.AsQueryable();
var partNumbers = (from b in _db.BillsOfMaterialsFlatteneds
group b by b.PartNumber into g
where requiredItems.All(r => g.Select(_ => _.ItemNumber).Contains(r))
select g.Key).Distinct();