c# - C# LINQ INNER JOIN 返回错误的计数
问题描述
我有以下带有 JOIN 的 sql,但它返回 50 的记录计数,但是当我将其转换为 LINQ 时,我没有得到匹配的计数。我注意到,当我添加 ON 子句时,visual studio intellisense 下拉列表不显示第二个表的 ID 属性。我想知道这是否是一个问题。
这是简单的SQL
SELECT * FROM Table1 T1 JOIN Table2 T2 ON T1.MyId = T2.MyId WHERE T1.IsCompleted
这是我的lamba LINQ,其中包含VC Intellisense 无法正常工作的评论。对于 table2,intellisense 下拉列表,它只显示 Equals、GetHashCode、GetType 和 ToString。只需手动输入 MyId 即可成功构建所有内容,但计数太高。谢谢
var test = this.myDbContent.Table1
.Join (this.myDbContent.Table2
table1 => table1.MyId,
table2 => table2.MyId,
(table1, table2) => new { table1, table2}
)
.Where (joinedTable => joinedTable.Table1.IsCompleted == 1)
解决方案
Join 是简单的 LINQ 操作,但通过 LINQ Query 可以更好地理解。
var query =
from t1 in myDbContent.Table1
join t2 in myDbContent.table2 on t1.MyId equals t2.MyId
where t1.IsCompleted
select new
{
t1,
t2
};
如果您仍然有不同的结果,可能MyId
是可为空的字段并且 EF 也匹配空值。
可以通过选项配置禁用它:
builder.UseSqlServer(ceConnection, x => x.UseRelationalNulls(true));
推荐阅读
- powershell - 未选择 PowerShell 表单数据网格
- reactjs - Redux store.getState() 返回初始状态
- c++ - 定义自定义结构类型的数组
- javascript - vuejs中图片之间的转换
- python - 如何使用 Python 和 openpyxl 仅在 Excel 中粘贴值
- android - 为什么安装 Android Studio 时英特尔® HAXM 安装失败?
- django - 在运行时在应用程序中使用 Vue 组件
- python - Python - 是否可以让 logging.handlers.httpHandler 将内容标头设置为 JSON 而无需使用自定义代码?
- python - 如何在扭曲的协程中使用多个线程池
- c++ - 这是向上还是向下?