[英]Can't sum up all Int32 field values
我所需要做的就是計算所有文檔的“債務”字段的總和。 但是我不知道該怎么做。 官方文檔似乎太晦澀,根本沒有幫助,因為關於如何使用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.