【问题标题】:C# method from List to List [duplicate]从列表到列表的C#方法[重复]
【发布时间】:2020-05-22 13:26:22
【问题描述】:

我列出了汽车清单,工厂每损坏 4 辆汽车就生产 (public bool Broken;)。

我的代码

public static void BuildCar()
{

    List<Factory> cars = new List<Factory>();

    for (int i = 1; i < 10; i++)
    {
        Factory newCars = new Cars("string", "string", "bool");
        if (i % 4 == 0)
        {
            newCars.Broken = true;
            cars.Add(newCars);
        }
        else
        {
            newCars.Broken = false;
            cars.Add(newCars);
        }
    }
}

我做了什么

所有汽车的列表(好车和坏车)。

我需要做什么

创建一个只将好车复制到另一个列表的方法。

谢谢。

【问题讨论】:

  • “将我从汽车列表发送到另一个列表”?您的意思是只将未损坏的汽车添加到单独的列表中吗?如果是这样,您不能直接在现有代码中将未损坏的汽车添加到第二个列表中吗?
  • 您的问题不清楚。您能否提供您希望输出的外观?
  • === 不是 C# 运算符
  • List&lt;Factory&gt; goodCars = newCars.Where(car =&gt; !car.Broken).ToList()?
  • @KhalilLazhar as OP 要求提供一份清单 :)

标签: c#


【解决方案1】:

LINQ 查询:

var goodCars = cars.Where(car => !car.Broken).ToList();

【讨论】:

  • 避免使用 ToList() 运算符,只需使用返回惰性求值序列的 where 运算符 - 无需复制
  • @KhalilLazhar 为什么你一直把方法称为operators
  • @ThePerplexedOne Microsoft 称它们为标准查询运算符 :))
  • 这正是我所说的。
【解决方案2】:

最简单的方法可能是:

List<Factory> goodCars = cars.FindAll(car => !car.Broken);

【讨论】:

  • 'Where' 比 'FindAll' 快,其中操作符返回一个惰性求值的序列 - 不需要像 'FindAll' 那样的复制
猜你喜欢
  • 2017-06-24
  • 2020-08-06
  • 2019-06-26
  • 2018-03-13
  • 1970-01-01
  • 2019-12-27
  • 2019-08-06
  • 2012-04-13
  • 1970-01-01
相关资源
最近更新 更多