zoukankan      html  css  js  c++  java
  • Linq 小知识

    简单的一个小例子

    ---------------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Web.UI;
    using System.Web;

    namespace ConsoleApplication1
    {
        class Program
        {

            static void Main(string[] args)
            {
                List<Student> list = new List<Student>();
                list.Add(new Student(31,"xdaoming","man",14));
                list.Add(new Student(31, "xdaoming", "women", 33));
                list.Add(new Student(31, "xdaoming", "man", 22));
                list.Add(new Student(1,"xaaob","women",18));
                list.Add(new Student(23,"xcaoh","man",11));
                list.Add(new Student(23,"das","man",11));

                var dd = from stu in list
                         where stu.Name.StartsWith("x") //筛选出姓名从x开始的学员
                         orderby stu.Name.Substring(1,1) descending,stu.Age descending//复合排序
                         select stu;
                foreach (Student s in dd)
                {
                    Console.WriteLine(string.Format("{0} {1} {2} {3}",s.ID,s.Name,s.Sex,s.Age));
                }
                Console.ReadLine();
            }
        }

        public class Student
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public string Sex { get; set; }
            public int Age { get; set; }

            public Student(int id, string name, string sex, int age)
            {
                this.ID = id;
                this.Name = name;
                this.Sex = sex;
                this.Age = age;
            }
        }

      
    }

    注意引用System.Linq

    -----------------------------

    过滤重复值

    x..Distinct();

    ---------------------------

    实现分组
    分组查询和SQL语句中的带有“group”关键字的查询功能类似,它能够把查询结果按照关键字进行分组。

    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                var group = from num in numbers
                            group num by num % 5 into g
                            select new { Remainder = g.Key, Numbers = g };
                foreach (var item in group)
                {
                    Console.WriteLine(string.Format("remain:", item.Remainder, item.Numbers));
                    foreach (var i in item.Numbers)
                    {
                        Console.WriteLine("number:" + i.ToString());
                    }
                }

    ---------------------------

    ---------------------------

    实现聚集查询

    LINQ不仅能够实现复杂的查询,也可以实现和SQL相同的聚集和联合查询,包括获取最大值、最小值、平均值和计数等。
    1。实现计数
    使用Count()方法返回集合项的数目,使用方法示例代码如下:
    var num = (from s in names select s.ToLower()).Count();
    2。求最大值和最小值
    返回最大值、最小值的方法和计数方法基本相同,也有两种表达方式,混合模式示例代码如下:
    int maxLength = (from s in names select s.Length).Max();//混合模式求最大值
    int minLength = (from s in names select s.Length).Min();//混合模式求最小值
    3。求平均值
    使用Average()方法返回集合的平均值,也有两种表达方式,混合模式和纯粹查询模式。
    4。返回集合的总和
    使用Sum()方法可以获取集合的总和,也有两种表达方式,混合模式和纯粹查询模式。

    ---------------------------

    【本节示例参考:\源代码\C14\ Example_LINQSkip】
    在编程中我们常常需要跳过某一段项目获取另一段的值,如分页就需要这样处理,没有LINQ前,实现分页比较麻烦,现在LINQ提供了分区类查询方法,实现分页就易如反掌,下面看看它的强大功能吧。
    分区类查询使用Take,、Skip、TakeWhile、SkipWhile来共同实现,其中,
    Take:提取指定数量的项;
    Skip:跳过指定数量的项并获取剩余的项;
    TakeWhile:根据指定条件提取项;
    SkipWhile:根据指定条件跳过项。
    下面使用一个简单的例子演示Take/Skip的用法。
    01 int[] numbers = new int[] { 1,2,3,4,5,6,7,8,9,10};
    02 //分区类查询
    03 var num5 = numbers.Skip(1).Take(2);
    04 foreach (var item in num5)
    05 {
    06       Console.WriteLine("分区类查询结果={0}",item);
    07 }
    ----------------------------------------------------------------------------------------

    LINQ 关联表

    var output = (from sub in context.Tbl_SubCompany
                                  join dept in context.Tbl_Department
                                  on sub.SubCompanyId equals dept.SubCompanyID
                                  where sub.Ins_no == InsNo
                                  select new
                                  {
                                    dept.DepartmentID,
                                    dept.DepartmentName
                                  }).ToList().SerializeObject();

    ---------------------------------------------------

    参考地址

    http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

  • 相关阅读:
    用C语言代码实现n进制数转换为十进制数
    RAID简介
    很久没更新自己的博客园的博客了
    微软之于程序员==铁饭碗破了
    sql编译执行过程
    sql server性能终结者锁
    sysprocesses
    SQL SERVER 2008的几个新东西:插入,删除,修改一起来(适合数据的同步)merger
    http Status Code Definitions
    sql server talbe valued parameters (tvp)
  • 原文地址:https://www.cnblogs.com/luxx/p/1951393.html
Copyright © 2011-2022 走看看