I'm working on converting my project from MySQL to MongoDB. I'm converting a few statements to MongoDB by using LinQ.
Here is my Original Statement:
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
and I try the following LinQ syntax and I got error:
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 raises issues at select and x.Parameter1
For x.Parameter1, the error is Cannot implicitly convert type 'string' to 'bool'
but my POCO is
[BsonElement("Parameter1")]
public string Parameter1
{
get;
set;
}
What is my code wrong? Could you give me some hints? Thank you
Count()expects a predicate (an expression returningtruefor each element you wish to count). Remove that part:x => x.Parameter1nullvalues forParameter1) then add that predicate insideCount():Count(x => x.Parameter1 != null)Count():Count(x => x.Parameter1 != null)Thank you so much, @FedericoDipuma