C# LINQ

LINQ(Language Integrated Query):语言集成查询。它允许编写C#代码以查询数据库相同的方式操作内存数据

 

 

int[] numbers = { 5, 10, 8, 3, 6, 12 }; //数据源必须是实现了IEnumerable接口的类型

1、Query语法:

说明:基本语法结构(这条语句不会马上执行,只有当queryNum这个变量被使用时,才会执行这条语句):
IEnumerable<int> queryNum =
    from num in numbers
    where num % 2 == 0
    orderby num
    select num;

foreach (var i in queryNum)
{
    Console.WriteLine(i.ToString());
}

 2、Method语法:

Where,Max,Select,Sum,Any,Average,All,Concat等都是针对IEnumerable的对象进行扩展的。也就是说,只要实现了IEnumerable接口,就可以使用这些扩展方法。

(1)

IEnumerable<int> MethodNum = numbers.Where(num => num % 2 == 0).OrderBy(num => num);
foreach (var i in MethodNum)
{
    Console.WriteLine(i.ToString());
}

(2)

var result = numbers.Where(num => { return num > 6; }).Sum();

Console.WriteLine(result);

(3)

比如说我们要从用户表customer和用户订单表orders中,查询上海的用户,在最近10个月中至少消费3笔满10快钱的用户的姓名和年龄。如果写成传统的方法,不知道要写多少代码,而且各种复杂的处理逻辑使得代码的语义非常不清晰,但是,如果写成LINQ的话,会是如下:

var results = from customer in customers
              where customer.State == "WA"
              let custOrders = (from order in orders
                                where customer.ID == order.ID
                                select new { order.Date, order.Amount })
              where custOrders.Count(co => co.Amount >= 10 &&
                                     co.Date >= DateTime.Now.AddMonths(−10)) >= 3
              select new { customer.Name, customer.Age };
foreach (var result in results) {
Console.WriteLine("{0} {1}", result.Name, result.Age);

(4).Select(o=>o.AgentLevel).Distinct().ToList();

LINQ语法主要有以下几个:

  1. form xx in xx 遍历数组或者链表
  2. group xx by xx into xx将什么根据什么条件打包成一个group如果下面LINQ语句不需用到这个group的属性可不用写into和后面的东西
  3. let xx=xx 改变前面传递的变量,然后传递给下面的语句
  4. order by xx descending 按照什么从小到大顺序排序,加上descending是从大到小排序
  5. where xx 过滤掉不符合条件的
  6. join xx in xx on xx 遍历新链表或者数组的元素,需要新满足什么条件的元素
  7. select xx 返回的是什么

链接:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

https://www.jianshu.com/p/4b90769751b0

https://blog.csdn.net/lee576/article/details/1682569

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值