返回完整结果 linq 分组查询



我正在尝试分组,但仍检索表中的所有数据。我对 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

最新更新