LinQ 基础

来源:互联网 发布:元江电视台软件 编辑:程序博客网 时间:2024/05/16 07:30

DeptEntity.cs 实体源码:

    class DeptEntity    {        public int DeptNo { get; set; }        public string DName { get; set; }        public string Loc { get; set; }    }    class EmpEntity    {        public int EmpNo { get; set; }        public string EmpName { get; set; }        public string Job { get; set; }        public double Sal { get; set; }        public DeptEntity Dept { get; set; }    }


一、 var 关键字

VAR 是3.5新出的一个定义变量的类型
其实也就是弱化类型的定义
VAR可代替任何类型
编译器会根据上下文来判断你到底是想用什么类型的


使用var定义变量时有以下四个特点:

(1). 必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:
var s;
s = “abcd”;

(2). 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。

(3). var要求是局部变量。

(4). 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。


var关键字用法:

1、声明匿名函数时使用var关键字

<span style="white-space:pre"></span>    DeptEntity dept = new DeptEntity() { DeptNo = 10, DName = "销售部", Loc = "北京" };            //1、Use the 'var' keyword to declare an anonymous function            var obj = new { DeptNO = dept.DeptNo, DeptName = dept.DName };            obj.DeptName.Print();  //Using the 'Print' extension method


2、LINQ投影出匿名函数结果时使用var关键字

<span style="white-space:pre"></span>    //2. LINQ投影出匿名函数结果时使用var关键字            var res = from item in num                         where item % 7 == 0                         orderby item descending                         select item;


3、类型很明确时使用var关键字

            //3. 类型很明确时使用var关键字            var str = "";            var department = new List<DeptEntity>();


4、so on...


二、 扩展方法 StringHelper.cs

1 扩展方法必须定义在静态非泛型类中

2 扩展方法要是静态方法(特殊静态方法)

3 this 要加在扩展类型参数前,而且必须是第一个参数

4  扩展方法的定义与使用要在同一命名空间

//1 The extended method must be defined in a static non generic class    static class StringHelper    {        //2 The extension method is a static method(special static method)        //3 'This' must be added to the extended type parameter, and must         //  be the first patameter.        //4 The definition and use of the extension method are in the same namespace        public static string AddChar9(this string str, char ch)        {            return ch + str + ch;        }        /// <summary>        /// Extension method 'Print', the function will be the output string        /// </summary>        /// <param name="str">A string to be output</param>        public static void Print(this string str)        {            Console.WriteLine(str);        }        /// <summary>        /// To all types of array (Array) expansion method,       ///  the number of elements that can be output array.        /// </summary>        /// <param name="arr"></param>        public static void PrintCount(this Array arr)        {            Console.WriteLine(arr.Length); ;        }


三、 LinQ 基本语法

Main() 方法:

            int[] num = { 35, 21, 55, 23, 3, 14, 24 };            #region Traditional C# syntax            //List<int> list = new List<int>();            //foreach (int item in num)            //{            //    if (item % 7 == 0)            //    {            //        list.Add(item);            //    }            //}            //list.Sort();            //list.Reverse();            //foreach (int item in list)            //{            //    Console.WriteLine(item);            //}            #endregion            #region Linq 1.Linq language + Linq function  2. Linq function              //1. Linq language + Linq function            var result = from item in num                         where item % 7 == 0                         orderby item descending                         select item;            result.ToList().ForEach(item => Console.WriteLine(item));            //2. Linq function            var list = num.Where(item => item % 7 == 0).OrderByDescending(item => item).ToList();            foreach (int item in list)            {                Console.WriteLine(item);            }            #endregion            Console.ReadKey();












0 0
原创粉丝点击