【问题标题】:Create new list from a old list using a lambda function使用 lambda 函数从旧列表创建新列表
【发布时间】:2012-04-23 19:12:31
【问题描述】:

我有以下内容:List<InputRow> 其中包含许多 InputRow 对象。

我想知道是否有办法让我在原始列表中使用 lambda 函数来给我一个新列表,其中 InputRow.someProperty > 1 用于所有对象。

这会给我留下一个 InputRow 对象的列表,它们的 someProperty 都大于 1。

【问题讨论】:

标签: c# list lambda


【解决方案1】:

你当然也可以这样做:

var list = new List<string>(){ "a", "b", "c" };

list.RemoveAll(s => s == "b");

这会删除现有的项目,而不是创建一个新列表。

【讨论】:

    【解决方案2】:

    您可以使用 LINQ(.Where().ToList() 扩展方法的结合):

    List<InputRow> originalList = ...
    List<InputRow> filteredList = originalList
        .Where(x => x.someProperty > 1)
        .ToList();
    

    【讨论】:

    • 在列表中使用RemoveAll 可以避免删除和重新创建列表。
    • @Servy Baxter 希望这些结果不要删除
    • @Servy 能详细说明一下RemoveAll的用法吗?我可以翻转语句说 RemoveAll 小于或等于 1。我只是不确定它的语法是什么。
    • list.RemoveAll(x => x.SomeProperty
    • @NikhilAgrawal 您可以在逻辑上重构 lambda 以表示相反的意思(在这种情况下很简单),或者您可以在整个事情之外添加一个 NOT 来涵盖一般情况。
    【解决方案3】:

    当然。你可以这样做:

    var newList = inputRowList.Where(inputRow => inputRow.someProperty > 1).ToList();
    

    【讨论】:

      【解决方案4】:
      List<InputRow> newlist = oldlist.Where(x => x.someProperty > 1).ToList();
      

      这将在someProperty &gt; 1 的条件下搜索您的旧列表,并使用.ToList() 将结果转换为列表

      【讨论】:

        猜你喜欢
        • 2017-10-17
        • 2020-01-25
        • 1970-01-01
        • 2019-06-30
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多