簡體   English   中英

無法匯總所有Int32字段值

[英]Can't sum up all Int32 field values

我有一個mongo db集合,其中包含這樣的文檔 在此處輸入圖片說明

我所需要做的就是計算所有文檔的“債務”字段的總和。 但是我不知道該怎么做。 官方文檔似乎太晦澀,根本沒有幫助,因為關於如何使用C#驅動程序3.6+絕對沒有任何信息

我遇到了這個線程C#Mongodb。 所有文檔的Sum字段,並嘗試將方法與Sum()一起使用,如下所示:

var result = m_Counterparties.AsQueryable()
                .Where(x => !x[CounterpartyFields.ID].Equals(ObjectId.Empty))
                .Sum(x => x[CounterpartyFields.DEBT].AsInt32);
             WriteLine(result);  

結果我總是得到0,但是您可以看到它必須至少為100

因此,這里的問題是MongoDB C#驅動程序需要將您的lambda表達式轉換為聚合。 您可以運行探查器以觀察其如何翻譯。 所以你的代碼有:

x => x[CounterpartyFields.DEBT].AsInt32

轉換為:

{
    "$group" : {
        "_id" : 1,
        "__result" : {
            "$sum" : "$debt.AsInt32"
        }
    }
}

這不是您想要的。

要解決此問題,您應該擺脫AsInt32並使其可編譯,可以使用以下代碼:

.Sum(x => (int)x[CounterpartyFields.DEBT]);

暫無
暫無

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

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