【问题标题】:Convert LinQ from SQL statement in C# MongoDB从 C# MongoDB 中的 SQL 语句转换 LinQ
【发布时间】:2017-10-07 07:57:22
【问题描述】:

我正在将我的项目从 MySQL 转换为 MongoDB。 我正在使用 LinQ 将一些语句转换为 MongoDB。

这是我的原始声明:

SELECT COUNT(machinelograwdata.Parameter1) AS 'HideSheetCounter', 
    machinelograwdata.Parameter42 AS 'Orders', 
    machinelograwdata.MachineID 
FROM machinelograwdata 
WHERE EventID = '14' 
    AND CONVERT( Parameter35 , DECIMAL) <> 0 
    AND machinelograwdata.StartTime <= ' strSearchingEndDate + ' 
    AND machinelograwdata.StartTime >= ' strSearchingStartDate + ' 
GROUP BY Parameter42 , machinelograwdata.MachineID

我尝试了以下 LinQ 语法,但出现错误:

var Temp3 = from c in MachineCollection.AsQueryable()
        where c.StartTime >= DateTime.Parse(strSearchingStartDate)
              && c.StartTime <= DateTime.Parse(strSearchingEndDate)
              && c.EventID == "14"
              && c.Parameter35 != "0"
        group c by new { c.Parameter42, c.MachineID } into grps
        select new
        {
            MachineID = grps.Key.MachineID,
            Orders = grps.Key.Parameter42,
            HideSheetCounter = grps.Count(x => x.Parameter1)
        };

Visual Studio 在selectx.Parameter1 提出问题 对于x.Parameter1,错误为Cannot implicitly convert type 'string' to 'bool'
但我的 POCO 是

[BsonElement("Parameter1")]
public string Parameter1
{
    get;
    set;
}

我的代码有什么问题?你能给我一些提示吗? 谢谢

【问题讨论】:

  • Count() 需要一个谓词(一个表达式为您希望计算的每个元素返回 true)。删除该部分:x =&gt; x.Parameter1
  • 谢谢你,@FedericoDipuma。但是如果我删除 "x => x.Parameter1" ,结果与原始语句结果不同。
  • 如果你想要相同的行为(忽略Parameter1null 值)然后在Count() 中添加该谓词:Count(x =&gt; x.Parameter1 != null)
  • 啊,现在我根据您的Count() 了解了更多关于 LinQ 的信息:Count(x =&gt; x.Parameter1 != null) 非常感谢,@FedericoDipuma

标签: c# mysql mongodb linq


【解决方案1】:

Count() method 需要一个谓词,它为满足该条件的每个要计数的元素返回一个布尔值。

要模仿 COUNT(columnName) 的相同行为,您需要为该方法提供一个谓词,该谓词排除您的字段的 null 值:

grps.Count(x => x.Parameter1 != null)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-29
    • 2011-01-24
    • 2013-02-15
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多