在List <t> Collection中select方法

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

那么,从List<T>开始有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; 

请注意,这些不使用string来表示谓词和项目 – 它们使用委托,通常从上面的lambdaexpression式创build。

如果lambdaexpression式和LINQ对你来说是新的,那么我build议你首先得到一本关于LINQ的书,比如LINQ in Action , Pro LINQ ,简单的C#4或者我自己的深度C# 。 你当然可以从networking教程学习LINQ,但我认为这是一个非常重要的技术,值得花时间去彻底学习。

你也可以试试

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

尝试这个:

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

使用lambdaexpression式请使用这个语句:

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

Generic List<T>具有可用于过滤数据的Where<T>(Func<T, Boolean>)扩展方法。

在你的情况与行数组:

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

如果您正在使用DataRowCollection ,则需要先将其DataRowCollection转换。

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