Linq查询

Linq查询开发工具与关键技术:linq查询和MVC开发工具作者:郑健鹏撰写时间:2019年5月1日摘要:本文介绍Linq查询基本操作(查询关键字)from子句where子句select子句group子句into子句orderby

开发工具与关键技术:linq查询和MVC开发工具
作者:郑健鹏
撰写时间:2019年5月1日

摘要:本文介绍Linq查询基本操作(查询关键字)

  • from 子句
  • where 子句
  • select子句
  • group 子句
  • into 子句
  • orderby 子句
  • join 子句
  • let 子句
  • 复合from子句
  • 在某些情况下,源序列中的每个元素本身可能是序列(集合),也可能包含序列
  • 用语访问单个数据库中的内部集合
  • 使用多个from字句执行连接
  • 可以包含多个可从独立数据源生成补充查询的from字句
    复合(顾名思义就是有多from的字句)实例:
class Program
{
    static void Main(string[] args)
    {
        List<Student> students = new List<Student>         
        {            
            new Student 
            {
                LastName="xiaogui",Scores=new List<int>{97,42,91,60}},
                new Student
                {
                    LastName="xiaozhan",Scores=new List<int>{50,92,81,60}},   
                    new Student 
                    {
                        LastName="xiaolan",Scores=new List<int>{32,32,81,90}},
                        new Student 
                        {
                            LastName="xiaowan",Scores=new List<int>{92,22,81,60}},         
        };
        var query = from stuent in students
                    from score in stuent.Scores
                    where score > 90
                    select new
                    {
                        Last = stuent.LastName,
                        score
                    };
        foreach (var student in query)//大于90分的显示出来        
        {
            Console.WriteLine("{0} Score:{1}", student.Last, student.score);
        }
        Console.ReadLine();
    }
}

public class Student 
{ 
    public string LastName { get; set; } 
    public List<int> Scores { get; set; }
}
public class Employee
{
    public string First { get; set; }
    public string Last { get; set; }
    public int ID { get; set; }
}

执行结果: xiaogui Score:97

      xiaogui Score:91

      xiaozhan Score:92

      xiaowan Score:92

let 关键字(使用let字句扩展范围变量)

  • 创建一个可以查询自身的可枚举类型

  • 使查询只能对范围变量word调用一次ToLower。

如果不使用let,则必须在where字句的每个谓词中调用ToLower

例:把每个单词开头包含a或者e的找出来

using System;
using System.Linq;

public class Test
{
    static void Main(string[] args)
    {
        string[] strings = { "A penny saved is a penny earned.", "The aaxly sdj", "the pa is no" };

        var query = from sentence in strings
                    let words = sentence.Split(' ')//用空格分割成数组                
                    from word in words
                    let w = word.ToLower()//把每个字母小写        
                    where w[0] == 'a' || w[0] == 'e'
                    select word;

        foreach (var s in query)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}

where 关键字 (筛选)

  • 一个查询表达式可以包含多个where字句

例:(把包含a的找出来)

using System;
using System.Linq;

public class Test
{
    static void Main(string[] args)
    {
        string[] str = { "a", "b", "c" };

        var query = from s in str
                    where s == "a"
                    select s;

        foreach (var s in query)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}

orderby 关键字 (排序)

  • 在查询表达式中,orderby字句可以使返回的序列(组)按升序或降序。

  • 可以指定多个键,以便执行一个或多个次要排序操作

  • 默认排序顺序为升序

  • 编译时,orderby字句被转换为对OrderBy方法的调用。orderby字句中的多个键被转换为ThenBy方法调用

ascending 升序

升序

using System;
using System.Linq;

public class Test
{
    static void Main(string[] args)
    {
        string[] str = { "a", "b", "c" };
        var query = from s in str
                    orderby s ascending
                    select s;
    }
}

结果为: a b c

今天的文章Linq查询分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/61824.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注