gpt4 book ai didi

c# - LINQ LEFT JOIN 不适用于 NULL 值

转载 作者:行者123 更新时间:2023-11-30 13:45:40 29 4
gpt4 key购买 nike

我有两个表StudentMarks

Student 表有以下字段: StudentID,姓名,MarkID(Nullable)Marks 表具有以下字段:MarkID,标记

Student table

StudentID   Name    MarkID

1 Mark 1

2 Mike NULL

3 John NULL

4 Paul 2

Mark table

MarkID  Mark

1 80

2 100

如果我使用左连接,那么我只会得到 markpaul 记录。我想要左表中的所有记录(Student)我的查询是:

   var query = (from s in Students  
join m in Marks on s.MarkID equals m.MarkID
into mar from subMark in mar.DefaultIfEmpty()
where(m.Mark > 80)
Select s.Name)
.ToList()

注意:这只是一个例子。使用左连接连接两个表并在第二个表上应用 where 条件时,如果连接的列值在第一个表中为空,则不会从第一个表中获取记录。

最佳答案

NULL 比较总是为假。这就是 SQL 的三值逻辑的工作方式。如果要匹配值均为 null 的行,则应使用检查它们是否为 null 的语句。

在 SQL 语句中你会这样写:

ON S.MARKID=M.MARKID OR (S.MARKID IS NULL AND M.MARKID IS NULL)

在 C# 中,您可以使用比较运算符,您的 LINQ 提供程序会将其转换为 IS NULL,例如:

on s.MarkID == m.MarkID || (s.MarkID == null && m.MarkID==null)

关于c# - LINQ LEFT JOIN 不适用于 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27859068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com