繁体   English   中英

如何将此SQL查询转换为使用的Lambda或LINQ(null)

[英]How do I translate this SQL query to Lambda or LINQ that uses (where is null)

我一直在尝试修改SQL中的某些数据行以在我的应用程序中进行测试,当我期望2387行时,我注意到Lambda中的查询返回了0行。 问题的根源是我在SQL的WHERE子句中使用括号来查看一些空值。 这是SQL查询:

SQL

-- THIS WORKS!
select * from vwAppsWithIssues
   where fld1stCheckAllocatedTo = 'nicholasg' and fldStage = 1
   and (fldStopStartDate is null or fldStopEndDate is not null)

-- The query was originally this (doesn't return rows)
  select * from vwAppsWithIssues
  where fld1stCheckAllocatedTo = 'nicholasg' and fldStage = 1
  and (fldStopStartDate = null or fldStopEndDate <> null)

返回0行的LAMBDA查询

public static int GetApplicationsFirstCount(string UserId)
        {
            try
            {
                using (IME_CheckOffEntities IME_CheckOffEntities = new IME_CheckOffEntities())
                {
                    return IME_CheckOffEntities.vwAppsWithIssues
                         .Where(a => a.fld1stCheckAllocatedTo == UserId && a.fldStage == 1 && (a.fldStopStartDate == null || a.fldStopEndDate != null))
                         .ToList().Count;
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }

更新

使用LINQPad我写了这个表达式:

VwAppsWithIssues
.Where (v => v.Fld1stCheckAllocatedTo == "nicholasg"
&& v.FldStage == 1 
&& (v.FldStopStartDate == null || v.FldStopEndDate != null)).Count()

生成此sql

SELECT COUNT(*) AS [value]
FROM [vwAppsWithIssues] AS [t0]
WHERE ([t0].[fld1stCheckAllocatedTo] = @p0) AND ([t0].[fldStage] = @p1) AND (([t0].[fldStopStartDate] IS NULL) OR ([t0].[fldStopEndDate] IS NOT NULL))

因此,现在我有了可以使用的lambda,我只需将其复制到Visual Studio。

  var count = IME_CheckOffEntities.vwAppsWithIssues
      .Where(v => v.fld1stCheckAllocatedTo == "nicholasg" && v.fldStage == 1 && (v.fldStopStartDate == null || v.fldStopEndDate != null)).Count();

它仍然只返回0行吗? 我也在C#中传递正确的userId。

我在c#中的计数也返回0行。 知道如何重写C#查询吗?

从linqpad,在我的模式之一

from
    f in Files
where
    f.PubDate == null || f.FilingDate != null
select
    f.IdFile

翻译如下

SELECT 
[Extent1].[idFichier] AS [idFichier]
FROM [dbo].[tableF] AS [Extent1]
WHERE ([Extent1].[datePubliF] IS NULL) OR ([Extent1].[dateDepotF] IS NOT NULL)

因此,例如,您是否确定UserId值?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM