我有表 1,其中仅包含零件号。
我有表 2,其中包含部件号以及我都需要获取的与其相关的许多其他字段。
我需要从表 2 中获取表 1 中没有部件号的所有部件。
我还需要从表 2 中获取不同的部件号。部件号不是表 2 中的主键。表 2 有超过 300 万条记录,因此多个语句可能不明智。
context.Parts.Where(x => !partmasterids.Contains(x.PartNumber)).ToList();
除了获得不同的返回外,这应该达到所有标准。
context.Parts.GroupBy(x => x.PartNumber).Select(x => x.First()).Where(x =>
!partmasterids.Contains(x .PartNumber)).ToList();
我已经尝试了上述 LINQ 语句并将 groupby 移动到 where 语句之后,但它不起作用。
我要么在 First() 中出错,FirstOrDefault 将无休止地运行。不同甚至不起作用。我不确定如何编写正确的 LINQ 语句。
最佳答案
我假设您已经在 partmasterids
中有了 TableA?
以及您上面的陈述中缺少的部分 (TableB-TableA):
var missingParts = context.Parts.Where(x => !partmasterids.Contains(x.PartNumber)).ToList();
那么不同的部件号是否只是 TableA 并集 (TableB-TableA)?
var allPartNumbers = partmasterid.Union(missingParts.Select(p=>p.PartNumber)).Distinct();
关于c# - Linq 和 Entity Framework 在非主键值上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878076/