在List <t> Collection中select方法
我有一个asp.net应用程序,现在我正在使用数据集进行数据操作。 我最近开始将这个数据集转换为List集合。 但是,在一些地方它不起作用。 一个是在我的旧版本,我正在使用datarow[] drow = dataset.datatable.select(searchcriteria)
。 但是在List集合中没有find特定值的方法。 有没有什么方法可以根据我的search条件select一些值? 我想知道这是否可能。 请帮帮我。
那么,从List<T>
开始有FindAll
和ConvertAll
方法 – 但更习惯的,现代的方法是使用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"));