Asp.net core Join返回重复的值
我正在将现有的.NET代码移植到.NET核心 有一个特定的联接代码在EFCore中不起作用。代码是:Asp.net core Join返回重复的值,asp.net-core,ef-core-3.1,Asp.net Core,Ef Core 3.1,我正在将现有的.NET代码移植到.NET核心 有一个特定的联接代码在EFCore中不起作用。代码是: var values = (from config in tblConfig join info in tblInfo on config.No equals info.No where ( //so
var values = (from config in tblConfig
join info in tblInfo on config.No equals info.No
where (
//some conditions
)
select config).ToList();
在EFCore中,它返回一个集合,其中大部分数据都是重复的。特别是,有一列regNo
,在某些情况下为“-1”。此值在联接后的所有行中重复
我尝试了分组,删除了其他帖子中提到的条件等。但是没有起作用。我指的是这个专栏,因为它很容易理解
配置表
信息表
基于
No
字段,我需要加入。似乎所有的空单元格都被同一个表中的非空内容替换了。您的查询将返回config
的所有实例,因此每次通过tblInfo
连接发生时,您都会看到它
快速修复-您可以使您的查询与众不同,如下所示:
var values = (from config in tblConfig
join info in tblInfo on config.No equals info.No
where (
//some conditions
)
select config).Distinct();
在我的例子中,我得到了重复的值(第一行对所有其他行重复) 当我们从没有唯一键的表中检索值时,就会发生这种情况。返回的行数正确,但与第一行重复。要解决问题,请使用。我从他那里得到了线索
使用此选项时,可能会丢失导航属性。请参阅解决此问题的答案。您能否向tblConfig和tblInfo显示它们的一些数据,以便我们更好地理解它们。另外,如果不扩展结果列表,很难看到复制的内容。对不起!这只是我筛选的一个字段,在这里可以清楚地看到重复。扩展整个数据可能会损害私有数据。感谢@scgough的建议。仍然没有变化。值为-1的regNo字段将被非零值填充。