• C#LINQ


      

    一、LINQ查询语法

    String[] names = {"Alonso" , "Zheng", " Smith", "Smythe"};

    Var queryResult = from n in names

    Where n.StartsWith("S")

    Select n;

    Foreach (var item in queryResult )

    {

    Console.WriteLine(item.ToString());

    }

     

    1、指定数据源:from子句

    From n in names

    2、指定条件:where子句

    Where n.StartsWith("S")

    3、指定元素:select子句

    Select n;

    4、完成:使用foreach循环

    foreach语句迭代结果

    5、延迟执行的查询

    Foreach语句并不是LINQ的一部分,它只是迭代结果。虽然foreach结构并不是LINQ的一部分,但它是实际执行LINQ查询的代码。查询结果变量仅保存了执行查询的一个计划,在访问查询结果之前,并没有提取LINQ数据,这成为查询的延迟执行或迟缓执行。生成结果序列的查询都要延迟执行。

    二、LINQ方法语法

    String[] names = {"Alonso" , "Zheng", " Smith", "Smythe"};

    Var queryResult = names.Where(n=>n.StartWith("S"));

    Foreach (var item in queryResult )

    {

    Console.WriteLine(item.ToString());

    }

     

    1、Lambda表达式

    n=>n.StartWith("S");

    C#把这个式子编译为一个匿名方法;

    三、LINQ查询语法对结果进行排序

    Var queryResults = from n in names

    where n.StartWith("S")

    orderby n

    select n;

    orderby子句默认为升序(AZ),降序(descending

    Orderby n descending

     如果按照字符串中的最后一个字母排序

    Orderby n.SubString(n.Length - 1)

     

    三、LINQ方法语法对结果进行排序

    Var queryResults = names.OrderBy(n=>n).Where(n=>n.StartsWith("S"));

     

    四、示例:查询

    public static int[] Numbers(int count)

            {

                Random random = new Random(0);

                int[] result = new int[count];

                for (int i = 0; i < count; ++i)

                {

                    result[i] = random.Next();

                }

                return result;

            }

    查询语法

    int[] result = Numbers(100000);

             var queryResult = from n in result

                               where n < 100000000

                               select n;

             int a = queryResult.Count();

     

    方法语法

             var queryresult = result.Where(n => n < 1000000);

     

    五、聚合运算符

    Count()Min()Max()Average()Sum()

    queryResult.Count();

    queryResult.Min();

    queryResult.Max();

    queryResult.Average();

    queryResult.Sum();

     

    六、查询复杂对象

    public class Stu

            {

                public int ID;

                public string Name;

            }

      List<Stu> listStu = new List<Stu>{

                                                    

     new Stu { ID = 1, Name = "af", Address="e" },

                                            new Stu { ID = 4, Name = "bh", Address="e" },

                                            new Stu { ID = 2, Name = "ce", Address="e" },

                                            new Stu { ID = 3, Name = "dg", Address="e" }

                                                  };

     

                var queryResult = from n in listStu

                                  where n.ID > 2

                                  orderby n.Name

                                  select n.Name;

     

     

    new Stu { ID = 1, Name = "af" }是对象初始化器

     

    七、投影:在查询中创建新对象

    1、查询语法:投影

    其中上示例中的

    select n.Name;

    就是一个投影,得到新的对象姓名的集合

    也可以表示为

    select new { n.Name, n.Address };

    2、方法语法:投影

                var queryResult = listStu.Where(n => n.ID > 2)

                                         .Select(n => new { n.Name, n.Address });

     

     

    八、单值选择查询

    1、查询语法:

          var queryResult = (from n in listStu

                                    where n.ID > 2

                                    orderby n.Name

                                    select n.Name).Distinct();

     

    2、方法语法:

     

                var queryResult = listStu.Where(n => n.ID > 2)

                                        .Select(n => new { n.Name, n.Address }).Distinct();

     

    九、AnyAll

    确定数据是否满足某个条件,或者确保所有数据都满足某个条件

       bool result = listStu.All(n => n.ID == 2);

     

    十、多级排序

    1、查询语法

    var queryResult = (from n in listStu

                                    where n.ID > 2

                                    orderby n.Name,n.ID

                                    select n.Name).Distinct();

     

    2、方法语法:     

    var queryResult = listStu.OrderBy(n => n.ID)

                                          .ThenByDescending(n => n.Name)

                                          .Select(n => new { n.ID, n.Address });

    十一、组合查询:

     

    十二、TakeSkip

    十三、集运算符

    Union()Intersect()

    十四、Join查询

    Var queryResult = from c in Customers

    Join o in Orders on c.ID equals o.ID

    Select new{c.ID, o.ID};

    十五、

     

     

     

  • 相关阅读:
    A Bug's Life-----poj2492(关系并查集)
    食物链--poj1182(并查集含有关系)
    How Many Answers Are Wrong----hdu3038(并查集)
    Parity game---poj1733
    使用FFmpeg类库实现YUV视频序列编码为视频
    JNA调用DLL函数遇到的几个问题
    从一个MFC工程移植对话框类到另一个MFC工程
    X264 输出的统计值的含义(X264 Stats Output)
    毕业生必知二三事。给即将毕业的师弟师妹看看,很有用的~~~~
    网络视频传输的服务质量(QoS)
  • 原文地址:https://www.cnblogs.com/gengyuanchao/p/2734595.html
Copyright © 2020-2023  润新知