gpt4 book ai didi

c# - 通过多个值查询字段的Linq语句被转换为in语句

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:24 24 4
gpt4 key购买 nike

我有一个这样的 linq 语句:

this.DataContext.TableName.Where(r => r.Field =="REQUEST" || r.Field== "UPDATE")

转换成sql后的语句是这样的:

 WHERE ([Extent1].[Field] IN (N'REQUEST',N'UPDATE'))

而不是:

WHERE Field = 'REQUEST' or Field = 'UPDATE'

底部示例的运行速度是顶部示例的两倍。有没有人能给我指出正确的方向,以使转换后的 SQL 看起来像下面的示例。

我正在使用 C# ASP.Net MVC 5、EF6,但无论我尝试什么,都只会给出相同的结果并使用 IN 语句。

最佳答案

我将 LINQPad4 用于:

Customers.Where(x => x.Name == "Tom" || x.Name == "Dick").Dump()

生成:

-- Region Parameters
DECLARE @p0 NVarChar(1000) = 'Tom'
DECLARE @p1 NVarChar(1000) = 'Dick'
-- EndRegion
SELECT [t0].[ID], [t0].[Name]
FROM [Customer] AS [t0]
WHERE ([t0].[Name] = @p0) OR ([t0].[Name] = @p1)

此处讨论了 IN 与 OR:IN vs OR in the SQL WHERE Clause

希望这对您有所帮助。

关于c# - 通过多个值查询字段的Linq语句被转换为in语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248991/

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