返回完整结果 linq 分组查询
本文关键字:查询 linq 结果 返回 | 更新日期: 2023-09-27 18:30:59
我正在尝试分组,但仍检索表中的所有数据。我对 Linq 还很陌生,似乎说不出我做错了什么。我不仅想对结果进行分组,而且还想检索表中的所有列。这可能吗?
(from r in db.Form
orderby r.CreatedDate descending
group r by r.Record into myGroup
where myGroup.Count() > 0
where (r.CreatedDate > lastmonth)
where r.Name == "Test Name"
select new { r, myGroup.Key, Count = myGroup.Count() }
)
一些"r"如何失去它的上下文,或者自从我分组"r"以来它已被替换。不确定。
您需要将任务分为两个步骤才能完成所需的操作。
组数据
var groupedData = db.Form.Where(item=>item.CreatedDate > lastMonth && item.Name == "Test Name")
.OrderByDescending(item=>item.item.CreatedDate)
.GroupBy(item=>item.Record)
.Select(group => new {Groups = group, Key = group.Key, Count = group.Count()})
.Where(item => item.Groups.Any());
从分组数据中选择Form
元素
var formElements = groupedData.SelectMany(g => g.Groups).ToList();
由于您正在筛选单个记录,因此应在分组之前而不是之后筛选它们:
(
from r in db.Form
where r.CreatedDate > lastMonth)
where r.Name == "Test Name"
orderby r.CreatedDate descending
group r by r.Record into myGroup
where myGroup.Count() > 0
select new { Groups = myGroup, myGroup.Key, Count = myGroup.Count() }
)
// Groups is a collection of db.Form instances