gpt4 book ai didi

C# 从列表中删除列表

转载 作者:太空狗 更新时间:2023-10-29 17:52:08 24 4
gpt4 key购买 nike

如果嵌套列表满足某些要求,是否有方便的方法从另一个列表中删除它?例如,假设我们有一组停靠点,我们决定将每个停靠点集合称为一条路线。每条路线都在列表中。然后我们决定将每条路线也放入一个列表中。

现在我们有了一个路由列表,有人决定某些类型的路由真的不应该包含在路由列表中。我怎样才能删除这些路线?下面是一些示例代码:

示例类

public class Stops
{
public Stops(int _param1, string _param2)
{
param1 = _param1;
param2 = _param2;
}

public int param1 { get; set; }
public string param2 { get; set; }
}

创建列表

List<List<Stops>> lstRoutes = new List<List<Stops>>();
List<Stops> lstStops = new List<Stops>();
List<Stops> lstMoreStops = new List<Stops>();

// Create some stops
for (int i = 0; i < 5; i++)
{
lstStops.Add(new Stops(i, "some text"));
}

lstRoutes.Add(lstStops);

// Create some more stops
for (int i = 5; i < 10; i++)
{
lstMoreStops.Add(new Stops(i, "some more text"));
}

lstRoutes.Add(lstMoreStops);

我如何从 lstRoutes 中删除任何具有大于 6 的 param1 值的路由?

最佳答案

最简单的方法(可以适用于所有枚举,而不仅仅是列表)是:

lstRoutes = lstRoutes.Where(r => !r.Any(s => s.param1 > 6)).ToList();

上面的代码片段创建了一个新列表,因此会发生复制,这意味着性能和内存使用都会受到轻微影响。最有效的方法是首先不将这些项目添加到列表中。

第二种最有效的方法是从列表中删除项目而不是构建一个新项目,因此内存使用不会受到太大影响:

lstRoutes.RemoveAll(r => r.Any(s => s.param1 > 6));

关于C# 从列表中删除列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15582569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com