0

私のLinqステートメントにはかなり具体的な要件があります。何十もの例を見てきましたが、満足のいく答えが見つかりませんでした。

メンバーのコレクションを保持するグループのコレクションを保持するコースのコレクションがあります。私の目標は、ユーザーが所属するコースのコレクションを返す IQuerable の linq ステートメントを作成し、ユーザーが所属する各コース内にグループのコレクションがあればそれを含めることです。

必要なものを返すlinqステートメントを作成することができましたが、ユーザーが所属するグループを持たないすべてのコースを除外します。

var courses2 = (from c in _set
                       from s in c.Students
                       where (s.UserName == userName)
                       from g in c.Groups
                       from m in g.Members
                       where (m.UserName == userName)
                       select c)
                       .Include(c => c.Groups)
                       .OrderBy(c => c.Title)

それらも含めるように変更するにはどうすればよいですか?

4

1 に答える 1

0

studentエンティティClassにクラス メンバーシップのエンティティへClassの nav プロパティがあり、エンティティにエンティティGroupsへのnav プロパティGroupがあり、次にエンティティへの nav プロパティがあると仮定しますStudents

// get the students to query against
var students = db.Students.Where( s => s.UserName == userName );

// get classes per group
var classesViaGroups = 
    students.SelectMany( s => s.Groups )
    .SelectMany( g => 
        g.Classes.Select( c => 
            new { GroupName = g.Name, ClassObj = g.Class } ) );

// get classes by the student entities alone
var classesViaStudents = 
    students.SelectMany( s => s.Classes )
    .Select( c => new { GroupName = null, ClassObj = c } );

次に、必要なことを実行して、それらclassesViaGroupsclassesViaStudents組み合わせたり、グループまたはクラスごとにルックアップまたは辞書を作成したりできます。

于 2013-03-30T07:51:15.307 に答える