联接返回重复的值

时间:2020-01-02 10:31:34

标签: asp.net-core ef-core-3.1

我正在将现有的.NET代码移植到.NET Core。

有一个特定的联接代码在EFCore中不起作用。代码是:

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”。连接后,该值将在所有行中重复。

我尝试了分组,删除了其他一些帖子中提到的条件等。但是没有用。我指的是本专栏,因为它很容易理解。

配置表 enter image description here

信息表 enter image description here

我需要加入No字段。似乎所有空单元格都替换为同一表中的非空内容。

2 个答案:

答案 0 :(得分:0)

您的查询将返回config的所有实例,因此每次通过tblInfo连接进行查询时,您都会看到它。

快速修复-您可以像这样使您的查询与众不同:

var values = (from config in tblConfig
    join info in tblInfo on config.No equals info.No
    where (
        //some conditions
    )
    select config).Distinct();

答案 1 :(得分:0)

就我而言,我得到了重复的值(所有其他行均重复第一行)。

当我们从没有唯一键的表中检索值时,就会发生这种情况。返回的行数将是正确的,但它们将与第一行重复。要解决此问题,请使用AsNoTracking。我从forums.asp.net

得到了线索

使用此选项时,很可能会错过导航属性。请参见this答案以解决此问题。