加入 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

使用它时很可能会错过导航属性。请参阅 答案来解决这个问题。