从列表集合中删除项目

时间:2012-03-13 17:00:12

标签: c# linq list collections linq-to-objects

我很确定这对你们大师来说是没脑子的,但我今天很难直接思考。我有一组使用此LINQ代码获取的列表:

var errPRNlines = File.ReadAllLines(myFile.FullName.ToString(), Encoding.GetEncoding(1250))
.Skip(1)
.Where (f => f.ToString().Contains("Not available"))
.Select(line => line.Split(new[] { "  " }, StringSplitOptions.RemoveEmptyEntries))
.ToList();

结果是:

的List1:

"GCE" 
Not available
""
"RES"
9.97000000
9.99000000

列表2:

"WRK.UN"
Not available
""
"INT"
16.22000000
16.22000000

我的问题是如何保存我的列表集合,但排除每个列表中的第3个元素?创建新列表或删除项目更容易吗?所以,我的结尾列表应该如下所示:

的List1:

"GCE" 
Not available
"RES"
9.97000000
9.99000000

列表2:

"WRK.UN"
Not available
"INT"
16.22000000
16.22000000

提前致谢。

4 个答案:

答案 0 :(得分:3)

您可以使用此Where - 重载执行此操作:

.Where ((f, index) => index != 2 && f.ToString().Contains("Not available"))

答案 1 :(得分:3)

您可以使用Where中的索引器跳过它:

var errPRNlines = File.ReadAllLines(myFile.FullName.ToString(), Encoding.GetEncoding(1250))
.Skip(1)
.Where (line => line.Contains("Not available"))
.Select(line => line.Split(new[] { "  " }, StringSplitOptions.RemoveEmptyEntries))
.Where((col, index) => index!=2)
.ToList();

答案 2 :(得分:1)

感谢@Tim& @Carsten为指针。这是更新后的代码:

var errPRNlines = File.ReadAllLines(myFile.FullName.ToString(), Encoding.GetEncoding(1250))
.Skip(1)
.Where (line => line.Contains("Not available"))
.Select(line => 
    line.Split(new[] { "  " }, StringSplitOptions.RemoveEmptyEntries)
    .Where((col, index) => index!=2))
.ToList();

答案 3 :(得分:0)

由于您始终只想删除列表中的第三个元素,因此可以使用List1.RemoveAt(2)和List2.RemoveAt(2)从列表中删除第三个元素。