c# - 从 C# MongoDB 中的 SQL 语句转换 LinQ

标签 c# mysql mongodb linq

我正在努力将我的项目从 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,错误是无法将类型“string”隐式转换为“bool”
但我的 POCO 是

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

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

最佳答案

Count() method需要一个谓词,该谓词为您想要计算的满足该条件的每个元素返回一个 bool 值。

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

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

关于c# - 从 C# MongoDB 中的 SQL 语句转换 LinQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617988/

相关文章:

c# - 如何使用 LINQ 检查所有项目是否属于同一类型

c# - Threading.SpinWait 结构与 Thread.SpinWait 方法

mysql - 从连接中选择所有用户的最后 5 个位置

java - 将 JSON 数组插入 mongodb

MongoDB - 如何在配置文件中使用 setParameter

c# - 将两个 Lambda/Linq 查询添加在一起

c# - 如何通过Selenium和Webdriver提高执行速度

MySQL > 表不存在。但它确实(或应该)

使用部分精确数学进行 MySQL 数据库搜索

mongodb - 如何在 Mongodb 集合中的嵌入数组上添加唯一索引