我有,列出Students并Teachers
var students = new List<Student>
{
new Student
{
Id= 1,
Name = "AA",
City = "London",
Country = "UK"
},
new Student
{
Id= 2,
Name = "BB",
City = "New Orleans",
Country = "USA"
}
}
var teachers = new List<Teacher>
{
new Teacher
{
Id = 1,
Name = "CC",
City = "Berlin",
Country = "Germany"
},
new Teacher
{
Id = 2,
Name = "DD",
City = "Mexico D.F.",
Country = "Mexico"
}
}
我想為每位老師獲取位于同一個國家和同一個城市的學生名單。
到目前為止我做了什么:
var result = from teacher in teachers
select new
{
teacher,
Students = students.Where(s => s.Country == teacher.Country && s.City == teacher.City).ToList()
};
這不起作用,我得到了casting exception。并嘗試:
var result = new List<(Teacher, IEnumerable<Student>)>();
teachers.ToList().ForEach(c => result.Add((c,
students.Where(s => s.Country == c.Country && s.City == c.City).ToList())));
這作業得很好,但是,有沒有其他方法而不回圈?
uj5u.com熱心網友回復:
您的 linq 查詢是正確的。您的查詢回傳匿名型別的串列。您不能將其直接轉換為元組串列。您遇到的問題是您要轉換為哪種型別。如果你想得到像 IEnumerable<(Teacher, IEnumerable)> 這樣的元組串列的結果,你應該編碼如下:
var result = from teacher in teachers
select (
teacher,
students.Where(s => s.Country == teacher.Country && s.City == teacher.City).ToList()
);
然后, result.ToList() 會給你一個元組串列, result.ToArray() 會給你一個元組陣列
Lambda 運算式替代:
var result = teachers
.Select(teacher => (teacher, students.Where(s => s.Country == teacher.Country && s.City == teacher.City).ToList()));
但是,我更喜歡匿名串列作為回傳型別而不是元組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/376252.html
下一篇:Java引數化類
