比方说,我们有一个类学生lambda参数如何工作?
class Student
{
public string Name { get; set; }
public string Gender { get; set; }
public List<string> Subjects { get; set; }
public static List<Student> GetAllStudetns()
{
List<Student> listStudents = new List<Student>
{
new Student
{
Name = "Tom",
Gender = "Male",
Subjects = new List<string> { "ASP.NET", "C#" }
},
new Student
{
Name = "Mike",
Gender = "Male",
Subjects = new List<string> { "ADO.NET", "C#", "AJAX" }
}
};
return listStudents;
}
}
我们想打印出每个学生有类似这样的主题:
汤姆 - ASP.NET
汤姆 - C#
Mike - ADO.NET
Mike - C#
等
所以我找到答案是
var result = Student.GetAllStudents().SelectMany(s => s.Subjects, (student, subject) => new { StudentName = student.Name, SubjectName = subject});
//then use foreach loop to retrieve...
我可以理解第二次使用的=>,这仅仅是投影到一个匿名类型。但我不明白的第一部分
s => s.Subjects, (student, subject)
从我的理解,左侧=>是intput参数,它是学生例如S IN这种情况下,但是=>应该是返回类型相关的右侧给学生实例s,例如,如果我们想获得学生的姓名,s.Name,那么(学生,主题)是什么意思?
谢谢。现在我明白了。我应该看到逗号作为分隔符 – grooveline
请增加一些关于's => Subjects'和'(...)=> ...'是不同的东西,而不是s = s。 ...)' –