您的位置:首页 > 其它

Linq基本语法概述

2010-09-18 11:55 316 查看
在向大家详细介绍Linq基本语法之前,首先让大家了解下调用Enumberalbe扩展函数,然后全面介绍Linq基本语法。

Linq基本语法

var result = from item in container orderby value ascending/descending select item;

1、获取全部记录

var allCars = from c in myCars select c;

2、只获取字段名称

var names = from c in myCars select c.PetName;

这里names就是隐式类型的变量。

3、使用Enumerable.Distinct<T>()

var makes = (from c in myCars select c.Make).Distinct<string>();

4、即可以在定义的时候调用Enumberalbe扩展函数

var names = from c in myCars select c.PetName;foreach (var n in names)
{
Console.WriteLine("Name: {0}", n);
}

也可以在兼容的数组类型上调用

var makes = from c in myCars select c.Make;
Console.WriteLine("Distinct makes:");
foreach (var m in makes.Distinct<string>())
{
Console.WriteLine("Make: {0}", m);
}

// Now get only the BMWs.
var onlyBMWs = from c in myCars where c.Make == "BMW" select c;

// Get BMWs going at least 100 mph.
var onlyFastBMWs = from c in myCars
where c.Make == "BMW" && c.Speed >= 100
select c;

5、生成新的数据类型(投影)

var makesColors = from c in myCars select new {c.Make, c.Color};

6、Reverse<T>()

或者

var subset = (from c in myCars select c).Reverse<Car>();
foreach (Car c in subset)
{
Console.WriteLine("{0} is going {1} MPH", c.PetName, c.Speed);
}

7、排序

默认是ascending

// Order all the cars by PetName.
var subset = from c in myCars orderby c.PetName select c;
// Now find the cars that are going less than 55 mph,
// and order by descending PetName
subset = from c in myCars
where c.Speed > 55 orderby c.PetName descending select c;

默认顺序时也可以明确指明

var subset = from c in myCars
orderby c.PetName ascending select c;

8、Enumerable.Except()
两个IEnumerable<T>兼容的对象的差集

static void GetDiff()
{
List<string> myCars = new List<String>
{ "Yugo", "Aztec", "BMW"};
List<string> yourCars = new List<String>
{ "BMW", "Saab", "Aztec" };
var carDiff =(from c in myCars select c)
.Except(from c2 in yourCars select c2);
Console.WriteLine("Here is what you don't have, but I do:");
foreach (string s in carDiff)
Console.WriteLine(s); // Prints Yugo.
}

以上介绍Linq基本语法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: