1

私は Entity Framework への Linqpad 接続を使用して Linq クエリを作成しています。アプリを実行しなくても結果を確認するのに最適です。とにかく、EventStudent テーブルに結合された Events テーブルがあります。EventStudent テーブルには各イベントの 0 から多数のレコード. イベントの日付とタイトル、および参加した学生の数を返したい. EventStudent テーブルには、学生とブール値の「attended」フィールドがあります。

このクエリを使用すると、すべてのイベント データと各イベントのすべての学生データを取得できます。これは良いことです。

from ev in Events.Include("EventStudents")
where (ev.StartDate >= new DateTime(2012, 7, 1) && ev.StartDate <= new DateTime(2013, 6, 30))
orderby ev.StartDate descending
select ev

必要なのは、イベント情報と出席した学生の COUNT です。これをグリッドにバインドできます。これは私が試したことです:

from ev in Events.Include("EventStudents")
where (ev.StartDate >= new DateTime(2012, 7, 1) && ev.StartDate <= new DateTime(2013, 6, 30))
orderby ev.StartDate descending
select new { ev.EventID, ev.StartDate, ev.Title, ev.EventStudents.Count() }

しかし、「匿名型メンバーの宣言子は単純な名前でなければなりません...」というエラーが表示されます。わかりましたが、どうすればイベント データと生徒数をすべて 1 つの型で取得して、グリッドにバインドできますか? 重要な場合 - グリッドには「選択」列があり、これがイベント ID が含まれている理由です - グリッドでは非表示になります。さらに、グリッドには並べ替えとフィルタリングの機能があります。そして...どうすれば日付のみでLinqクエリから日付を返すことができますか(時間はありませんか?)。

ありがとうございました!

4

2 に答える 2