C# linq语法
编辑
147
2022-09-01
linq是什么
LINQ(Language Integrated Query )语言集成查询,是一组用于C#和VB语言的拓展,它允许VB或者C#代码以操作内存数据的方式,查询数据库。
LINQ使用的优点:
- 无需复杂学习过程即可上手。
- 编写更少代码即可创建完整应用。
- 更快开发错误更少的应用程序。
- 无需求助奇怪的编程技巧就可合并数据源。
- 能够大幅减少过程控制语句的代码块,使代码的可读性和可维护性大幅提高。
- 任何对象或数据源都可以定制实现LINQ适配器,为数据交互带来真正方便。
linq 语法
linq语法分为查询语句,类似SQL语法 和方法语法
查询语句:
Int[] nums={1,2,4,5,6,7};//数据源
var list = from a in nums
where a % 2 == 0
orderby a descending
select a; //linq的第一种写法
方法语法:
Int[] nums={1,2,4,5,6,7};//数据源
var list2 = nums
.Where(a => a % 2 == 0)
.OrderByDescending(a => a)
.Select(a => a); //linq的第二种写法
我个人比较喜欢方法语法 故下面的演示代码均采用方法语法书写
语法详解
查询 Where
Int[] nums={1,2,4,5,6,7};//数据源
var list2=nums
//查询数据源中
.Where(a => a % 2 == 0)//查询数据源中的偶数
制定Key查询 Select
private List<DataTest> _dataTests = new List<DataTest>()
{
new DataTest()
{
name = "小张",
age = 18,
Address = "北京"
},
new DataTest()
{
name = "小李",
age = 19,
Address = "上海"
},
new DataTest()
{
name = "小王",
age = 20,
Address = "北京"
},
};//数据源
var select = _dataTests.Select(i => i.name);
输出:小张 小李 小王
函数计算 count min max sum
Int[] nums={1,2,4,5,6,7};//数据源
var count= nums.Count();//获取数据源内元素的数量
Int[] nums={1,2,4,5,6,7};//数据源
var min = nums.Min(i => i);//获取数据源内的元素最小值
Int[] nums={1,2,4,5,6,7};//数据源
var sum = nums.Sum(i => i); //求和
排序 OrderBy OrderByDescending
Int[] nums={1,2,4,5,6,7};//数据源
var OrderBy = nums.OrderBy(a => a); //升序
var OrderByDescending = nums.OrderByDescending(a => a); //降序
取第一个满足的数据 First FirstOrDefault
Int[] nums={1,2,4,5,6,7};//数据源
var FirstOrDefault = nums.FirstOrDefault(i => i > 5); //取出第一个大于5的数据 如果没有则返回默认值
var First = nums.First(i => i > 5); //取出第一个大于5的数据
跳过前面的数据 Skip
Int[] nums={1,2,4,5,6,7};//数据源
var a = nums.Skip(2); //跳过前2个元素
输出:4 5 6 7
取前几条数据 Take
Int[] nums={1,2,4,5,6,7};//数据源
var a = nums.Take(4); //取前4条数据
输出:1 2 4 5
分页 Skip - Take
Int[] nums={1,2,4,5,6,7};//数据源
var a = nums
.Skip(2).Take(2);//取2-4条的数据
输出:4 5
模糊查询 Contains
private List<DataTest> _dataTests = new List<DataTest>()
{
new DataTest()
{
name = "小张",
age = 18,
Address = "北京"
},
new DataTest()
{
name = "小李",
age = 19,
Address = "上海"
}
};//数据源
var d = _dataTests.Where(s => s.name.Contains("张"));//模糊查询名称中包含张的数据
输出:名字:小张 年龄:18 地址:北京
分组 GroupBy 遍历 ForEach
private List<DataTest> _dataTests = new List<DataTest>()
{
new DataTest()
{
name = "小张",
age = 18,
Address = "北京"
},
new DataTest()
{
name = "小李",
age = 19,
Address = "上海"
},
new DataTest()
{
name = "小王",
age = 20,
Address = "北京"
},
};//数据源
var d = _dataTests.GroupBy(a => a.Address);//分组
//遍历
d.ToList().ForEach(a =>
{
Console.WriteLine(a.Key);
a.ToList().ForEach(b =>
{
Console.WriteLine(b.name);
});
});
输出:北京 小张 小王 上海 小李
- 0
- 0
-
分享