LINQ是C#针对数据集的一种查询方式。
例如,此时存在一个数组
string[] milks = { "8.蒙牛a", "5.伊利a", "2.小洋人", "4.纯享a" };
我想查询该数组中以"a"结尾并按其本身排序时。
var items = from s in milks//查询该数组
where s.EndsWith("a") //哪些以“a”结尾
orderby s//本身排序
select s;//查询
结果如下:
上述方法使用于数组、列表。
若此时数据源为DataTable。
//构造测试数据
DataTable milks_dt = new DataTable;
//构造列
milks_dt.Columns.Add("Id");
milks_dt.Columns.Add("Milk");
//添加行x4
object[] row = new object[milks_dt.Columns.Count];
for(int i = 0; i < milks.Length; i++)
{
row[0] = milks[i].Split('.')[0];
row[1] = milks[i];
milks_dt.Rows.Add(row);
}
//此时转换
var milksItem = milks_dt.AsEnumerable();
//AsEnumerable - 返回一个System.Collections.Generic.IEnumerable`1对象,其中泛型参数T为System.Data.DataRow。 该对象可以在LINQ表达式中使用或方法查询。
var items = from x in milkItems where x.Field<string>("Name").EndsWith("a") orderby x.Field<string>("Id") select x;
执行结果如图,同样的结果只不过单个元素变成了DataRow: