c# - Linq 和 Entity Framework 在非主键值上不同

标签 c# mysql entity-framework linq

我有表 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/

相关文章:

c# - 为什么 WebBrowser DocumentCompleted 仅在加载所有图像时触发?

mysql 全文索引

c# - 具有业务层和 DAL 的 WPF 体系结构

c# - 我如何检查属性在更新之前是否实际更改

c# - 避免多余的条件语句

java - 未初始化的整数相当于null

c# - WCF:App.config 中的配置是否比自定义代理类中的硬编码更好?

c# - 正则表达式分割模式多行

php - 我需要一个更好的解决方案来使我的应用程序中以前的用户头像无效(PHP/MySQL)

Cron 作业在 MySQL 表之间移动多行