我正在将现有的.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”。连接后,该值将在所有行中重复。
我尝试了分组,删除了其他一些帖子中提到的条件等。但是没有用。我指的是本专栏,因为它很容易理解。
我需要加入No
字段。似乎所有空单元格都替换为同一表中的非空内容。
答案 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答案以解决此问题。