繁体   English   中英

从列表集合中删除项目

[英]Remove an item from a collection of Lists

我敢肯定,这对您的专家来说是不费吹灰之力的,但是我今天很难直截了当。 我有使用此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();

结果是:

列表1:

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

列表2:

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

我的问题是,我如何保留列表的集合,但在每个列表中排除第3个元素? 创建新列表还是仅删除项目比较容易? 因此,我的列表结尾集合应如下所示:

列表1:

"GCE" 
Not available
"RES"
9.97000000
9.99000000

列表2:

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

提前致谢。

您可以使用Where -Overload来执行此操作:

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

您可以在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();

感谢@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();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM