0
私のプロジェクトをMySQLからMongoDBに変換しています。 LinQを使用していくつかのステートメントをMongoDBに変換しています。ここで LinQをC#MongoDBのSQLステートメントから変換します
は私の元の文です: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
については、エラーを私のPOCOは
[BsonElement("Parameter1")]
public string Parameter1
{
get;
set;
}
コードが間違っていますか?いくつかのヒントを教えてください。 ありがとう
'カウント()'述語(それぞれに 'true'をを返す式を見込ん:あなたは方法あなたのフィールドの
null
値を除外述語を提供する必要がありCOUNT(columnName)
の同じ動作を模倣するあなたが数えたい要素)。その部分を削除してください: 'x => x.Parameter1' –
@FedericoDipumaありがとうございます。 しかし、 "x => x.Parameter1"を削除すると、結果は元のStatement Resultと同じになりません。 – ThomasLee
同様の振る舞い( 'Parameter1'の' null'値を無視する)をしたい場合は、 'Count()'の中にその述語を追加してください: 'Count(x => x.Parameter1!= null)' –