LINQ IQueryable with group by and count

モレンパッド

私の.netCore 2.0 Razor Pagesプロジェクトでは、次のようなリストを宣言しています。ここで、MyDataはEntityFrameworkデータセットにリンクされたモデルです。

public IList<MyData> MyData { get; set; }

簡単にするために、私のデータが次のようになっているとしましょう。

ID | UserName | LogOn
1  | User1    | 25/03/2018 12:54
2  | User2    | 25/03/2018 09:43
3  | User1    | 24/03/2018 18:23
4  | User3    | 24/03/2018 08:16
5  | User2    | 23/03/2018 17:12

..等

次に、OnGet()メソッドで、これをクエリして、次のようにループできるリストを生成できることがわかります。

IQueryable<MyData> MyDataIQ = from i in _context.MyData select i;

MyData = await MyDataIQ.ToListAsync();

UserNameでグループ化されたリストを、そのUserNameのすべての出現回数とともに返したい場合、LINQクエリはどのようになりますか?

私はこれを試しました:

IQueryable<MyData> MyDataIQ = from i in _context.MyData group i by i.UserName into grp select new {key = grp.Key, cnt = grp.Count()};

しかし、これは私に型変換エラーを与えるだけです。

生データがあります。この方法でグループ化されたビューに表示したいだけです。

私はCore2.0とLinqを初めて使用するので、どんなヘルプでも非常に役立ちます。

user3188639

MyDataIQとして宣言してIQueryable<MyData>いますが、匿名型のIQueryableを作成しています。

これは機能するはずです:

var MyDataIQ = from i in ctx.MyData group i by i.UserName into grp select new { key = grp.Key, cnt = grp.Count() };

foreach (var a in MyDataIQ)
{
    Console.WriteLine($"{a.key} {a.cnt}");
}

結果:

User1 2
User2 2
User3 1

編集:アップス、マイク・ヒクソンがすでにコメントで答えているのがわかります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事