【c#基础】Linq操作符用法说明:
2021-02-04 21:13
标签:The tar 编译 操作 ble span rom === oftype 1:筛选 Where :使用where子句,可以合并多个表达式。例如:找出赢得至少15场比赛的美国和英国赛车手 一样的结果: 其中r:A中的A所指定 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/formatting-numeric-results-table 使用格式说明符可以创建格式字符串。 格式字符串的格式如下: 2:用索引筛选 在where()方法重载中,可以传递第二个参数--索引。 索引时筛选器返回的每个结果的计数器。可以在表达式中使用这个索引。执行基于索引的计算。 3:类型筛选 为了基于类型筛选,可以使用OfType()扩展方法。 4:复合的from子句 如果需要根据对象的一个成员进行筛选,而该成员本身是一个系列,就可以使用复合的from子句 下列例子中Cars是 r中的一个属性,Cars是一个字符串数组 c#编译器把复合的from子句和Linq查询转换为SelectMany()扩展方法。 SelectMany()方法可用于迭代序列的序列。 这个方法和from复合子句返回的结果是一样的。 5:排序 Orderby子句 和 orderby descending子句 说明:OrderBy()和OrderByDescending()方法返回IOrderEnumerable IEnumerable 6:分组 要根据一个关键字值对查询结果分组,可以使用group子句 【c#基础】Linq操作符用法说明: 标签:The tar 编译 操作 ble span rom === oftype 原文地址:https://www.cnblogs.com/SignX/p/11448977.html var racers = from r in Formulal.GetChampions()
where r.Wins > 15 && (r.Country == "USA" || r.Country == "UK")
select r;
foreach (var r in racers)
{
Console.WriteLine($"{r:A}");
} var racers2 = Formulal.GetChampions().Where(r => r.Wins > 15 && (r.Country == "USA" || r.Country == "UK")).Select(r=>r);
Axx
,其中
A
是格式说明符,控制应用于数值的格式设置类型。xx
是精度说明符,影响格式化输出中的位数。 精度说明符值的范围为 0 到 99。1 //查询姓氏以A开头的所有赛车手,并且索引是奇数的赛车手
2 var racers3 = Formulal.GetChampions()
.Where((r, index) => r.LastName.StartsWith("A") && index % 2 != 0);
3 foreach (var racer in racers3)
4 {
5 Console.WriteLine($"{racer:A}");
6 } 1 object[] data = {"one", 1, 3, "four", "five", 6};
2 var query = data.OfTypestring>();
3 Console.WriteLine("输出string类型");
4 foreach (var s in query)
5 {
6 Console.WriteLine(s);
7 }
8
9 Console.WriteLine("输出int类型");
10 var query2 = data.OfTypeint>();
11 foreach (var q in query2)
12 {
13 Console.WriteLine(q);
14 }
//如果需要根据对象的一个成员进行筛选,而该成员本身是一个系列,就可以使用复合的from子句
var ferrariDrivers = from r in Formulal.GetChampions()
from c in r.Cars
where c == "Ferrari"
orderby r.LastName
select r.FirstName + " " + r.LastName;
foreach (var item in ferrariDrivers)
{
Console.WriteLine(item);
}
1 Console.WriteLine("=====SelectMany查询方法======");
2 var ferrariDrivers1 = Formulal.GetChampions().SelectMany(r => r.Cars, (r, c) => new {Racer = r, Car = c}).Where(r=>r.Car=="Ferrari").OrderBy(r=>r.Racer.LastName).Select(r=>r.Racer.FirstName+" "+r.Racer.LastName+" " +r.Car);
3 foreach (var item in ferrariDrivers1)
4 {
5 Console.WriteLine(item);
6 }
1 var racers = from r in Formulal.GetChampions()
2 where r.Country == "Italy"
3 orderby r.Wins descending
4 select r;
5 foreach (var racer in racers)
6 {
7 Console.WriteLine(racer);
8 }
9
10 Console.WriteLine();
11 var racers1 = Formulal.GetChampions().Where(r => r.Country == "Italy").OrderByDescending(r => r.Wins);
12 foreach (var racer in racers1)
13 {
14 Console.WriteLine(racer);
15 }
1 var racers2 =
2 (from r in Formulal.GetChampions() orderby r.Country, r.LastName, r.FirstName select r).Take(10);
3 foreach (var racer in racers2)
4 {
5 Console.WriteLine(racer);
6 }
7
8 Console.WriteLine();
9
10 var racer3 = Formulal.GetChampions().OrderBy(r => r.Country).ThenBy(r => r.LastName)
11 .ThenBy(r => r.FirstName).Take(10);
12 foreach (var racer in racer3)
13 {
14 Console.WriteLine(racer);
15 }