如何将SQL查询转换为LINQ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将SQL查询转换为LINQ?相关的知识,希望对你有一定的参考价值。

如何将以下SQL查询转换为linq?这是经过尝试的

    SELECT COUNT(DISTINCT SampleDateTime) AS Total
    FROM dbo.PrecisionArchive
    WHERE AgencySourceId = 7 AND EventType IN('R', 'ONS')
答案

你可以使用:

var total = dbo.PrecisionArchive.Where(p => p.AgencySourceId == 7)
                                .Where(p => p.EventType == "R" || p.EventType == "ONS")
                                .Select(p => p.SampleDateTime)
                                .Distinct()
                                .Count();
另一答案

这样的事情应该有效:

var result = 
    (from x in dbContext.PrecisionArchive
     where x.AgencySource == 7 &&
           (x.EventType == "R" || x.EventType == "ONS")
     select x.SampleDateTime)
    .Distinct()
    .Count();

您也可以尝试使用Contains来表示IN子句,但我不相信Linq-to-SQL支持它:

var result = 
    (from x in dbContext.PrecisionArchive
     where x.AgencySource == 7 &&
           new[] { "R", "ONS" }.Contains(x.EventType)
     select x.SampleDateTime)
    .Distinct()
    .Count();

以上是关于如何将SQL查询转换为LINQ?的主要内容,如果未能解决你的问题,请参考以下文章

如何将sql查询转换为linq查询

如何将SQL查询转换为LINQ?

如何将此 SQL 内部联接查询转换为 LINQ 语法?

协助将 SQL 查询转换为 LINQ 查询

如何将带有内连接的 sql 查询转换为 linq lambda 表达式?

如何将此 GROUP BY / MIN SQL 查询转换为 LINQ?