非常に単純なケースのように見えますが、私の頭やstackoverflowで適切なラムダ式を見つけることができません:(私はすべての助けに感謝します)LINQラムダ式を使用して適切なデータを取得する方法多対多関係
ケースはシンプルに見える、私はそれらの間の多くの多くの二つのクラスと関係を持っている
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public List<Document> Documents { get; set; }
}
public class Document
{
public int Id { get; set; }
public string Name { get; set; }
public List<Student> Students { get; set; }
}
その後、私はいくつかの値を開始します。。
Student st1 = new Student { Id = 1, Name = "Student 1" };
Student st2 = new Student { Id = 2, Name = "Student 2" };
Student st3 = new Student { Id = 3, Name = "Student 3" };
List<Student> listStudent12 = new List<Student>();
listStudent12.Add(st1);
listStudent12.Add(st2);
List<Student> listStudent23 = new List<Student>();
listStudent23.Add(st2);
listStudent23.Add(st3);
Document doc1 = new Document { Id = 1, Name = "doc 1", Students = listStudent12 };
Document doc2 = new Document { Id = 2, Name = "doc 2", Students = listStudent23 };
List<Document> listDocs = new List<Document>();
listDocs.Add(doc1);
listDocs.Add(doc2);
今、私はリストを取得したいと思います「学生3」(id:3)に関連するlinqラムダ式を使用したドキュメントの使用。
私はこのように試してみました:
var result = listDocs.Where(d => d.Students.FirstOrDefault().Id == 3).ToList();
が、それは(私がなぜ知っていると思います - 最初に返さ生徒が3に等しくない)はnullを返します。
Id = 3の生徒の学生リストにあるすべての文書が結果に含まれていると思います。 私はここにこぞって助けが必要です。事前にありがとうございます。
は、SQLレベルでは、私は行くだろう:あなたはあなたの例でやったSELECT Document.* from Document, DocumentStudent WHERE Document.Id = DocumentStudent.DocumentId AND DocumentStudent.StudentId = 3
試しVAR結果= listDocs.Whereを使用している場合、それは単純に見えるだろうと思い.ToList(); – Ashiquzzaman
はい、これはまさに必要なものです。ありがとうございますAshiquizzaman – Mikolaj