首页 > 解决方案 > 如何使用 LINQ 将对象列表中的字段与另一个字段的对应项分配?

问题描述

假设我有一个List<MyClass> myObjects并且我有int[] numbers。鉴于:

  1. 的长度numbers等于mObjects.Count
  2. 我正在使用一个具有其他一些字段和方法的类,例如:

    class MyClass
    {
        public int Number;
        public int AnotherNumber;
        public void WorkWithNumber() { /* Do some work. */ }
    }
    

有没有办法使用 linq 将每个项目分配给列表中numbers的对应项MyClass.Number?最好使用myObjects.ForEach().

标签: c#linq

解决方案


理想情况下,您应该使用foreach循环来执行此操作:

foreach (var p in myList.Select((obj, idx) => new { Val = numbers[idx], Obj = obj })) {
    p.Obj.Number = p.Val;
}

您可以在没有 的情况下使用相同的技巧foreach,但该解决方案的可读性会差很多。


推荐阅读