如何使用LINQ从多个序列投影?

Ole*_*hai 2 c# linq

所有

我有三个系列:

{"Alex", "Anna"}
{19, 20}
{"A", "B"}
Run Code Online (Sandbox Code Playgroud)

我想使用LINQ和以下lambda或其他东西将它们全部投射到"Student"类型的一个对象序列中:

(name, age, grade)=>new Student(name, age, grade)
Run Code Online (Sandbox Code Playgroud)

结果应该是两个学生对象("Alex",19,"A")和("Anna",20,"B")

我怎样才能做到这一点?

Sel*_*enç 5

You can combine two Zip to achieve this:

names.Zip(ages, (n,a) => new { name = n, age = a })
     .Zip(grades, (s,g) => new Student { Name = s.name, Age = s.age, Grade = g });
Run Code Online (Sandbox Code Playgroud)

  • 我认为你的匿名类比我的元组更具可读性. (4认同)
  • @PanagiotisKanavos实际上,只有一次迭代.第一个lambda和第二个lambda连续交错.请参阅此dotnetfiddle以获取示例:https://dotnetfiddle.net/cRDQWM (3认同)