这篇文章介绍了LINQ使用From和GroupBy子句的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
FROM子句
一、简单FROM子句
获取数据源:
var queryAllCustomers =
from cust in Customers
select cust;
分析:
查询表达式必须以from子句开头
例子中cust是范围变量,范围变量类似于foreach循环中的迭代变量,但在查询表达式中,实际上不发生迭代。执行查询时,范围变量将用作对Customers中的每个后续元素的引用。因为编译器可以推断cust的类型,所以不必显示指定此类型。
Customers是数据源,实现了IEnumerable或IEnumerable(T)或其派生接口的
二、复合FROM子句
查询出成绩有90分以上的学生,得到他们的名字和成绩
//数据源
IList<Student> students = new List<Student>
{
new Student{ Name="Kevin", Score=new List<int>{89,93,88,78}},
new Student{ Name="Jackie",Score=new List<int>{92,87,83,91}},
new Student{ Name="Helen",Score=new List<int>{53,76,72,62}}
};
//所有的Linq查询操作都由以下三个不同的操作组成:
//1.获得数据源
//2.创建查询
//3.执行查询
//使用复合from子句查询命令
var getStudent =
from student in students
from score in student.Score
where score > 90
select new { Name = student.Name, Score = score };
foreach (var st in getStudent)
{
Console.WriteLine("NAME:{0},SCORE:{1}",st.Name,st.Score);
}
分析:
我们可以看到学生对象中有个Score属性,Score属性本身就是List集合,这时候我们就要用到复合from子句进行查询了。首先遍历学生对象集合中的每个学生对象,然后在用另一个from子句,对每个学生对象中的Score属性进行遍历,筛选出含有90分以上的学生信息进行返回。
GroupBy子句
一、简介
group子句返回一个IGrouping(T Key,T element)对象序列,编译时,group子句被转换成对GroupBy方法的调用。
二、案例
案例一:
根据首字母分组,并打印到控制台
//数据源
string[] fruits = { "apple", "banana", "peach", "orange", "melon", "lemon" };
//分组查询的查询语句
var query = from f in fruits
group f by f[0];
//执行查询
foreach (var letters in query)
{
Console.WriteLine("words that start with letter:" + letters.Key);
foreach (var word in letters)
{
Console.WriteLine(word);
}
}
分析:
首先遍历字符串数组中的每个字符串,然后根据每个字符串的首字母进行分组,返回结果.
案例二:
var query = from f in fruits
group f by f[0] into g
where g.Key == 'p' || g.Key == 'b'
select g;
分析:
如果您想要对每个组执行附加查询操作,则可以使用into上下文关键字指定一个临时标识符。使用into时,必须继续编写该查询,并最终用一个select语句或另一个group子句结束该查询。
案例三:
string[] strs = { "胡广成", "张国荣", "刘德华", "故国冰封", "万里雪飘", "AAA", "胡翰轩", "张杰" };
var list5 = strs
//.Where(a => a.Length == 3)
.Select(item => item)
.GroupBy(item => item.Length);//分组 分组依据是字符串的长度
foreach (var item in list5)
{
Console.WriteLine("----------------");
Console.WriteLine($"分组字段是{item.Key}"); //item.Key是分组依据 显示分组字段
foreach (var items in item)//内层循环遍历分组项
{
Console.WriteLine(items);
}
}
分析:
按照名字的长度进行分组显示。
三、多字段分组示例
GroupBy(x => new { x.a , x.b, x.c }).Select( x=> ( new Class名 { a=x.Key.a , b=x.Key.b , c = x.Key.c } ))
到此这篇关于LINQ使用From和GroupBy子句的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持得得之家。
本文标题为:LINQ基础之From和GroupBy子句


基础教程推荐
- C#中的Linq to JSON操作详解 2023-06-08
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#中 Json 序列化去掉null值的方法 2022-11-18
- Unity shader实现高斯模糊效果 2023-01-16
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- 实例详解C#实现http不同方法的请求 2022-12-26
- C# 解析XML和反序列化的示例 2023-04-14
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- Unity 如何获取鼠标停留位置下的物体 2023-04-10