簡體   English   中英

從C#MongoDB中的SQL語句轉換LinQ

[英]Convert LinQ from SQL statement in C# MongoDB

我正在將我的項目從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()方法需要一個謂詞,該謂詞為要計數滿足該條件的每個元素返回一個布爾值。

要模擬COUNT(columnName)的相同行為,您需要為該方法提供一個謂詞,該謂詞排除字段的null值:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM