LINQ标准查询操作符(一)

一、投影操作符

var query =
        from e in db.Employees
        where e.FirstName.StartsWith("M")
        select e;
  var q =
        db.Employees
        .Where(e => e.FirstName.StartsWith("M"))
        .Select(e => e);

当然,你也可以返回单个列,例如:

var query =
         from e in db.Employees
         where e.FirstName.StartsWith("M")
         select e.FirstName;
var query1 =
        db.Employees.Where(e => e.FirstName.StartsWith("M"))
        .Select(e => e.FirstName);

你也可以返回序列中的某几列,例如:

var query =
    (from e in db.Employees
     where e.FirstName.StartsWith("M")
     select new
     {
         e.FirstName,
         e.LastName,
         e.Title
     }).ToList();
var query1 =
    db.Employees.Where(e => e.FirstName.StartsWith("M"))
    .Select(e => new
    {
        e.FirstName,
        e.LastName,
        e.Title
    })
    .ToList();

 

二、排序操作符

1. OrderBy

var query =
    (from e in db.Employees
     orderby e.FirstName
     select e).ToList();
//方法语法
var q =
    db.Employees
    .OrderBy(e => e.FirstName)
    .ToList();

2. OrderByDescending

OrderByDescending操作符将序列中的元素按照降序排列。用法与OrderBy相同,这里不再演示。

3. ThenBy

ThenBy操作符实现按照次关键字对序列进行升序排列。此操作符的查询语法与方法语法略有不同,以下代码演示了这一点:

//查询语法
var query =
    (from e in db.Employees
     orderby e.FirstName, e.LastName
     select e).ToList();
//方法语法
var q =
    db.Employees
    .OrderBy(e => e.FirstName)
    .ThenBy(e => e.LastName)
    .ToList();

4. ThenByDescending

ThenByDescending操作符实现按照次关键字对序列进行降序排列。此操作符的查询语法与方法语法略有不同,以下代码演示了这一点:

//查询语法
var query =
    from e in db.Employees
    orderby e.FirstName,e.LastName descending
    select e;
//方法语法
var q =
    db.Employees
    .OrderBy(e => e.FirstName)
    .ThenByDescending(e => e.LastName)
    .Select(e => e);
foreach (var item in query)
{
    Console.WriteLine(item.FirstName);
}

5. Reverse

Reverse将会把序列中的元素按照从后到前的循序反转。需要注意的是,Reverse方法的返回值是void,以下代码演示了这一点

//方法语法
var q =
    db.Employees
    .Select(e => e.FirstName)
    .ToList();
q.Reverse();

6. into、let关键字

List<Peo> peoList = new List<Peo>();
            peoList.Add(new Peo() { name = "lizhi", city = "shanghai" });
            peoList.Add(new Peo() { name = "linqingxia", city = "beijing" });
            peoList.Add(new Peo() { name = "liuyifei", city = "shanghai" });
            var intoLinq = from num in peoList
                           group num by num.city into groupnum
                           where groupnum.Count() >= 2
                           select new { city = groupnum.Key, number = groupnum.Count() };
            foreach(var i in intoLinq)
            {
                Console.WriteLine(i.city + "---" + i.number);
            }

以上示例:into 字面解释意为“打入”,以上事例将遍历proList得到的num筛选出city属性放入groupnum中,这里的groupnam可以看作是一个集合,这个集合存的是city属性。

string[] strings = { "hello world.", "lin qing xia", "wang zu xian" };
            var strs = from s in strings
                       let words = s.Split(' ')
                       from word in words
                       let w = word.ToUpper()
                       select w;
            foreach(var s in strs)
            {
                Console.WriteLine(s);
            }

以上示例:将遍历的元素进行处理,并将处理结果存放到words,这里的words也可看作一个集合(可以这样理解,具体自己去发掘 嘿嘿)

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值