【问题标题】:Remove an item from a collection of Lists从列表集合中删除项目
【发布时间】:2012-03-13 17:00:12
【问题描述】:

我很确定这对各位大师来说是没有道理的,但我今天很难思考。我有一组使用此 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

我的问题是如何保留我的列表集合但排除每个列表中的第三个元素?创建新列表或删除项目更容易吗?所以,我最后的列表集合应该是这样的:

列表1:

"GCE" 
Not available
"RES"
9.97000000
9.99000000

列表2:

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我认为他想跳过的不是第三行而是每一行的第三列。所以这个Where 太早了。
    • 你可能是对的 - 只看示例(不是很清楚) - 在这种情况下,你必须在下一个 Select 中放置类似的 Where - 我认为这没什么大不了的)
    【解决方案2】:

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

    【讨论】:

    • 您的代码完全取出了我的 List2。我只想删除每个列表中的第三个元素。
    • 谢谢@Tim。连同 Carsten 的建议,我能够更有效地使用您的代码。我粘贴了正确的代码。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2013-01-17
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 2022-12-20
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多