在向大家详细介绍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基本语法
【编辑推荐】