下面给出详细的 "LINQ基础之From和GroupBy子句" 的攻略:
From子句
from
子句用来指定数据源和创建一个范围变量,它负责查询和返回一个序列。
下面是一个示例,通过使用 from
子句从一个整数数组中选择所有大于 5 的数字:
int[] numbers = { 2, 3, 5, 7, 11, 13 };
var result = from n in numbers
where n > 5
select n;
foreach (var n in result)
{
Console.WriteLine(n);
}
输出:
7
11
13
从上面的例子中,我们可以看到,通过 from
子句创建了一个名为 n
的范围变量,指定了数据源为 numbers
数组。之后在 where
子句中我们对每个元素都进行了判断,如果满足条件就筛选出来了。
GroupBy子句
GroupBy
子句用于将一个序列分组。通过将序列中的元素按指定的键值进行分组,来返回分组后的新序列。
下面是一个实际示例,通过 GroupBy
子句将一组人按照所在的城市进行分组:
public class Person
{
public string Name { get; set; }
public string City { get; set; }
}
List<Person> people = new List<Person>
{
new Person { Name = "John", City = "Seattle" },
new Person { Name = "Jane", City = "Portland" },
new Person { Name = "Tom", City = "Seattle" },
new Person { Name = "Jerry", City = "Portland" },
};
var result = from p in people
group p by p.City into g
select new { City = g.Key, Count = g.Count() };
foreach (var g in result)
{
Console.WriteLine($"{g.City}: {g.Count}");
}
输出:
Seattle: 2
Portland: 2
从上面的代码中,我们可以看到,首先通过 group by
子句将人按照所在的城市分组,并在 into g
中将分组的结果保存到名为 g
的临时变量中。
接着,我们从分组结果 g
中使用 Key
属性可以获取到分组的键值(也就是城市名),并使用 Count
方法可以获取到该组中元素的个数。
最后,我们使用 select new
创建一个新的匿名类型,将城市名和该组元素个数作为元素返回给结果集。
以上就是 LINQ
中 from
和 GroupBy
子句的基础用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:LINQ基础之From和GroupBy子句 - Python技术站