0

テーブル内のすべてのデータをグループ化して取得しようとしています。私はまだ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」をグループ化してから置き換えられました。わからない。

4

2 に答える 2

2

目的を達成するには、タスクを2つのステップに分割する必要があります。

グループデータ

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();
于 2012-04-17T14:34:38.943 に答える
0

個々のレコードをフィルタリングするため、グループ化後ではなく、グループ化の前にフィルタリングする必要があります。

(
    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
于 2012-04-13T21:39:20.547 に答える