如果符合某些要求,是否有方便从其他列表中删除嵌套列表?例如,假设我们有一组止损,我们决定将每个止损集合称为一条路线。每条路线都在列表中。然后我们决定将每条路线放入一个列表中。
现在我们有一个路由列表,有人决定某些类型的路由确实不应该包含在路由列表中。我该如何删除这些路线?这是一些示例代码:
示例类
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中删除任何路径,例如,任何param1值大于6?
答案 0 :(得分:7)
最简单的方式(可适用于所有枚举,而不仅仅是列表):
lstRoutes = lstRoutes.Where(r => !r.Any(s => s.param1 > 6)).ToList();
这将创建一个新列表,以便进行复制。最有效的方法是首先将这些项“添加”到列表中。第二个最有效的方法是从列表中删除项目,而不是构建一个新项目:
lstRoutes.RemoveAll(r => r.Any(s => s.param1 > 6));
答案 1 :(得分:0)
List<Stops> stop = lstRoutes.Find(delegate(List<Stops> stp) { return stp.param1 > 6; });