gpt4 book ai didi

c# - LINQ to Entities 加入可空字段,其中 Null 表示 "Match All"

转载 作者:太空狗 更新时间:2023-10-29 18:32:08 24 4
gpt4 key购买 nike

我正在尝试使用 Entity Framework 5 运行以下 LINQ 查询:

int taskId = 2;

query = from a in Table_A
where a.StatusCode != "DONE"
&& a.Inbound
join b in Table_B
on a.Id equals b.Id_Table_A
join c in Table_C
on a.State equals (c.State ?? a.State)
where 2 == c.Id_Task
&& b.DataType == c.DataType
select a.Id;

导致我出现问题的行是:

on a.State equals (c.State ?? a.State)

Table_C中的“State”字段是可以为空的……当它为null时,用来表示“所有州”。因此,当“c.State”为空时,我希望匹配记录。如果我要用 SQL 编写此代码,我将使用以下内容:

JOIN Table_C ON Table_A.State = ISNULL(Table_C.State, Table_A.State)

不幸的是,我收到以下错误:

名称“a”不在“equals”右侧的范围内。考虑交换“等于”两边的表达式。

如果有人能告诉我实现这项工作的秘诀,我将不胜感激。

谢谢。

最佳答案

您可以像这样修改您的代码:

int taskId = 2;

query = from a in Table_A
where a.StatusCode != "DONE"
&& a.Inbound
join b in Table_B
on a.Id equals b.Id_Table_A
from c in Table_C
where 2 == c.Id_Task
&& b.DataType == c.DataType
&& (c.State == null || a.State.Equals(c.State))
select a.Id;

一个join本质上是一个where子句,所以这里由于join<的限制我们可以使用where子句.

关于c# - LINQ to Entities 加入可空字段,其中 Null 表示 "Match All",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356384/

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