【发布时间】: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 在select 和x.Parameter1 提出问题
对于x.Parameter1,错误为Cannot implicitly convert type 'string' to 'bool'
但我的 POCO 是
[BsonElement("Parameter1")]
public string Parameter1
{
get;
set;
}
我的代码有什么问题?你能给我一些提示吗? 谢谢
【问题讨论】:
-
Count()需要一个谓词(一个表达式为您希望计算的每个元素返回true)。删除该部分:x => x.Parameter1 -
谢谢你,@FedericoDipuma。但是如果我删除 "x => x.Parameter1" ,结果与原始语句结果不同。
-
如果你想要相同的行为(忽略
Parameter1的null值)然后在Count()中添加该谓词:Count(x => x.Parameter1 != null) -
啊,现在我根据您的
Count()了解了更多关于 LinQ 的信息:Count(x => x.Parameter1 != null)非常感谢,@FedericoDipuma