【问题标题】:Select method in List<t> CollectionList<t> 集合中的选择方法
【发布时间】:2011-04-17 15:15:23
【问题描述】:

我有一个 asp.net 应用程序,现在我正在使用数据集进行数据操作。我最近开始将此数据集转换为 List 集合。但是,在某些地方它不起作用。一是在我的旧版本中,我使用的是datarow[] drow = dataset.datatable.select(searchcriteria)。但是在 List 集合中没有可用于查找特定值的方法。我有什么方法可以根据我的搜索条件选择一些值吗?我想知道这是否可能。请帮帮我。

【问题讨论】:

    标签: c# asp.net list dataset


    【解决方案1】:

    嗯,从 List&lt;T&gt; 开始 确实FindAllConvertAll 方法 - 但更惯用的现代方法是使用 LINQ:

    // Find all the people older than 30
    var query1 = list.Where(person => person.Age > 30);
    
    // Find each person's name
    var query2 = list.Select(person => person.Name);
    

    您需要在文件中使用 using 指令来完成这项工作:

    using System.Linq;
    

    请注意,这些不使用字符串来表达谓词和项目 - 它们使用委托,通常如上所述从 lambda 表达式创建。

    如果你对 lambda 表达式和 LINQ 不熟悉,我建议你先买一本介绍 LINQ 的书,例如 LINQ in ActionPro LINQC# 4 in a Nutshell 或我自己的 C# in Depth。您当然可以仅从网络教程中学习 LINQ,但我认为它是如此重要的技术,值得花时间彻底学习它。

    【讨论】:

      【解决方案2】:

      通用List&lt;T&gt; 具有可用于过滤数据的Where&lt;T&gt;(Func&lt;T, Boolean&gt;) 扩展方法。

      在您的情况下使用行数组:

      var rows = rowsArray.Where(row => row["LastName"].ToString().StartsWith("a"));
      

      如果你使用DataRowCollection,你需要先施放。

      var rows = dataTableRows.Cast<DataRow>().Where(row => row["LastName"].ToString().StartsWith("a"));
      

      【讨论】:

        【解决方案3】:

        你也可以试试

        var query = from p in list
                    where p.Age > 18
                    select p;
        

        【讨论】:

          【解决方案4】:

          试试这个:

          using System.Data.Linq;
          var result = from i in list
                       where i.age > 45
                       select i;
          

          使用 lambda 表达式请使用此语句:

          var result = list.where(i => i.age > 45);
          

          【讨论】:

            【解决方案5】:

            我使用了一个脚本但是要加入,也许我可以帮助你

            string Email = String.Join(", ", Emails.Where(i => i.Email != "").Select(i => i.Email).Distinct());
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-04-09
              • 1970-01-01
              • 2010-09-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多