作为后续到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()?' –