看起來像一個非常簡單的例子,但在我的頭上或計算器,我不能爲它找到合適的lambda表達式:(我感謝所有幫助。如何獲得使用LINQ Lambda表達式有許多正確的數據,以一對多的關係
案例看起來很簡單我有他們之間有兩個類和關係多對多
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 lambda表達式的文檔。
我想是這樣的:
var result = listDocs.Where(d => d.Students.FirstOrDefault().Id == 3).ToList();
但它返回空值(我想我知道爲什麼 - 第一個返回的學生不等於3)。
我希望結果包含所有在學生的列表中有Id = 3的文檔。 我在這裏搜索並需要幫助。預先感謝您的任何。
在SQL水平,我會去:
SELECT Document.* from Document, DocumentStudent WHERE Document.Id = DocumentStudent.DocumentId AND DocumentStudent.StudentId = 3
嘗試VAR的結果= listDocs.Where(d => d.Students.any(S => s.Id == 3)) .ToList(); – Ashiquzzaman
是的,這正是需要的。謝謝Ashiquizzaman – Mikolaj