加入 returns 个重复值
Join returns duplicate values
我正在将现有的 .NET 代码移植到 .NET 核心。
有一个特定的连接代码在 EFCore 中不起作用。代码是:
var values = (from config in tblConfig
join info in tblInfo on config.No equals info.No
where (
//some conditions
)
select config).ToList();
在 EFCore 中,这个 returns 一个集合,其中大部分数据都是重复的。特别是,有一列 regNo
在某些情况下是“-1”。该值在连接后的所有行中重复。
我尝试了其他 post 中提到的分组、删除条件等。但是没有用。我点这个专栏是因为它很容易理解。
配置Table
信息Table
基于 No
字段我需要加入。似乎所有空单元格都替换为来自相同 table.
的非空内容
您的查询将返回 config
的所有实例,因此每次通过 tblInfo
连接出现时您都会看到它。
快速修复 - 您可以像这样使您的查询与众不同:
var values = (from config in tblConfig
join info in tblInfo on config.No equals info.No
where (
//some conditions
)
select config).Distinct();
在我的例子中,我得到了重复的值(第一行对所有其他行重复)。
当我们从没有唯一键的 table 中检索值时,就会发生这种情况。返回的行数将是正确的,但它们将与第一行重复。要解决,请使用 AsNoTracking . I got the clue from forums.asp.net
使用它时很可能会错过导航属性。请参阅 答案来解决这个问题。
我正在将现有的 .NET 代码移植到 .NET 核心。
有一个特定的连接代码在 EFCore 中不起作用。代码是:
var values = (from config in tblConfig
join info in tblInfo on config.No equals info.No
where (
//some conditions
)
select config).ToList();
在 EFCore 中,这个 returns 一个集合,其中大部分数据都是重复的。特别是,有一列 regNo
在某些情况下是“-1”。该值在连接后的所有行中重复。
我尝试了其他 post 中提到的分组、删除条件等。但是没有用。我点这个专栏是因为它很容易理解。
配置Table
信息Table
基于 No
字段我需要加入。似乎所有空单元格都替换为来自相同 table.
您的查询将返回 config
的所有实例,因此每次通过 tblInfo
连接出现时您都会看到它。
快速修复 - 您可以像这样使您的查询与众不同:
var values = (from config in tblConfig
join info in tblInfo on config.No equals info.No
where (
//some conditions
)
select config).Distinct();
在我的例子中,我得到了重复的值(第一行对所有其他行重复)。
当我们从没有唯一键的 table 中检索值时,就会发生这种情况。返回的行数将是正确的,但它们将与第一行重复。要解决,请使用 AsNoTracking . I got the clue from forums.asp.net
使用它时很可能会错过导航属性。请参阅