私の.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を初めて使用するので、どんなヘルプでも非常に役立ちます。
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]
コメントを追加