【发布时间】:2014-05-20 23:00:58
【问题描述】:
所以我通过这个 LINQ 查询得到了一些很奇怪的 SQL 输出。
public string GetHeaders(string header,string lec, string state)
{
string[] states = { "FL", "CA", "IN", "AL", "MI" };
string[] updatedstateslist = states.Where(x => x != state).ToArray();
var headers = (from h in db.Headers
where h.Description.Contains(header) & h.LEC == lec & !updatedstateslist.Contains(h.State)
select new
{
description = h.Description,
sic = h.SIC,
yphv = h.YPHV,
state = h.State
});
SQL OutPut 即将推出
SELECT
1 AS [C1],
[Extent1].[Description] AS [Description],
[Extent1].[SIC] AS [SIC],
[Extent1].[YPHV] AS [YPHV],
[Extent1].[State] AS [State]
FROM [dbo].[Headers] AS [Extent1]
WHERE ([Extent1].[Description] LIKE @p__linq__0 ESCAPE N'~')
AND (([Extent1].[LEC] = @p__linq__1) OR (([Extent1].[LEC] IS NULL) AND (@p__linq__1 IS NULL)))
AND ( NOT (([Extent1].[State] IN (N'FL', N'CA', N'AL', N'MI')) AND ([Extent1].[State] IS NOT NULL)))
奇怪的具体部分是 (@p__linq__1 IS NULL)
我无法弄清楚 LINQ 的哪一部分导致了这一小部分的出现。如果我知道我可以重写 Linq 以避免这种情况发生。
【问题讨论】:
-
这肯定看起来像一个绑定变量,不是吗?