【问题标题】:Nest foreach cycle and adding items to collection into linq methods嵌套foreach循环并将项目添加到linq方法中
【发布时间】:2017-10-26 12:21:35
【问题描述】:

我有以下课程:

class Person
{
    public string Name { get; set; }
}

class Student
{
    public string Name { get; set; }
}

我有一份人员名单:

IList<Person> persons = new List<Person>
{
    new Person() { Name = "Bill" },
    new Person() { Name = "Bob" },
    new Person() { Name = "Henry" },
};

我在 foreach 循环中将项目添加到新集合:

IList<Student> students = new List<Student>();
//Is it possible to nest the following rows in linq method?
foreach (var person in persons)
{
   students.Add(new Student() { Name = person.Name });
}

是否可以嵌套foreach 并将项目添加到linq 方法中?

【问题讨论】:

  • @downvoter 投反对票的理由是什么?这真的很有趣。谢谢你的回复。
  • 经常会问到类似的问题。 LINQ 并非用于处理数据,而是用于查询/转换数据。 Addvoid 函数,这意味着不会将任何结果传递给下一个操作/结果。

标签: c# list linq foreach


【解决方案1】:

如果您的意思是用 LINQ 查询替换 foreach 循环(不太清楚您为什么在问题中谈论嵌套循环),那么您可以试试这个:

IList<Student> students = persons.Select(p => new Student { Name = p.Name }).ToList();

或者如果您愿意:

IList<Student> students = (from p in persons select new Student { Name = p.Name }).ToList();

【讨论】:

  • 你也可以这样做:persons.ToList().ForEach(item => students.Add(new Student() { Name = item.Name }));
  • @RafaelMansurHaddad 情况更糟。为什么你会这样做呢?
猜你喜欢
  • 2023-03-17
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多