作爲後續到this question,我需要在MongoDB中聚合內部數組,我試圖在LINQ中完成相同的任務。使用LINQ在對象列表內部聚合列表
我靠近,我已經找到了如何聚合在一個單獨的項目:
// Get collection
var collection = _database.GetCollection<VehicleDataUpload>("Vehicles");
// Get first project that meets our identifier
var firstProject = collection.AsQueryable().Where(i => i.ProjectId.Equals("1234")).First();
// Get a list of DailySummaryData objects
var aggregation =
from entry in firstProject.VehicleEntries
group entry by entry.Data
into result
select new DailySummaryData() {
ProjectName = firstProject.ProjectId,
Date = result.FirstOrDefault().Date,
Passed = result.Sum(x => (x.VehicleStatus.Equals("PASSED") ? 1 : 0)),
Failed = result.Sum(x => (x.VehicleStatus.Equals("FAILED") ? 1 : 0))
};
return aggregation.ToList();
但是,我不能收集使用...First()
,因爲有可能是一個項目中多個VehicleDataUploads。如何彙總返回的文檔列表中的所有列表?
有什麼問題嗎?你不想過濾一個Project ID,但是對於所有的項目都有相同的結果?正確? – user449689
關閉!我需要按項目ID過濾,但可能會返回多個文檔。所以當我調用'var firstProject = collection.AsQueryable()。Where(i => i.ProjectId.Equals(「1234」))。First();'我寧願能說'var uploads = collection.AsQueryable ().Where(i => i.ProjectId.Equals(「1234」))。ToList()'然後執行與上面相同的聚合,但對於'uploads'中的*每個元素*。這更清楚嗎? – AdamMc331
你試過刪除'.First()?' –