gpt4 book ai didi

c# - Entity Framework .Where 方法链接

转载 作者:IT王子 更新时间:2023-10-29 04:14:28 26 4
gpt4 key购买 nike

这两种查询上下文的方式有区别吗?

Firm firm = base.context.Firms
.Where(f => f.SomeId == someId)
.Where(f => f.AnotherId == anotherId)
.FirstOrDefault();

Firm firm = base.context.Firms
.Where(f => f.SomeId == someId && f.AnotherId == anotherId)
.FirstOrDefault();

似乎链接非常适合完成 AND 条件。我不相信您可以链接 OR 语句。是否有理由偏爱其中一个,或者一个更好/更有效率的场景?

最佳答案

它们应该产生相同的最终结果(如果我没记错的话),但我发现第二个更具可读性并且更好地展示了最初的意图。


更新

我刚刚用 LINQPad 验证了上面的说法。事实上,这两个查询将生成相同的 SQL。

例如:

context.SomeTable.Where(c => c.ParentId == null)
.Where(c => c.Name.Contains("F"))
.Select(c => c.Name);

产生:

SELECT [t0].[Name] 
FROM [SomeTable] AS [t0]
WHERE ([t0].[Name] LIKE @p0) AND ([t0].[ParentId] IS NULL)

这是由以下人员生成的相同 SQL:

context.SomeTable.Where(c => c.ParentId == null && c.Name.Contains("F"))
.Select(c => c.Name);



您还可以将内容压缩得更多一些(出于与上述相同的原因,我认为这样做更可取):

var firm = base.context.Firms.FirstOrDefault(f => f.SomeId == someId 
&& f.AnotherId == anotherId);

关于c# - Entity Framework .Where 方法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098343/

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