linq基本操作


    

一、Linq有兩種語法:

1、  方法語法

2、  查詢語法

下面舉個例子看看這兩種方法的區別

比如現在有一個學生類

public class student

{

    public string username { get; set; }

    public int age { get; set; }

    public string sex { get; set; }

}

我們通過一個方法來添加很多同學

public IList<student> GetStu(int n)

    {

        IList<student> stuList = new List<student>();

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

        {

            student stu = new student();

            stu.age = 25 + i;

            stu.sex = "" + i;

            stu.username = "張三" + i;

            stuList.Add(stu);

        }

        return stuList;

}

那么這個方法返回的就是一個list集合,下面我們就可以通過linq對這個集合進行操作

首先我們來查詢所有的學生

A、查詢語法:

   var list = GetStu(10);

    var result = from s in list

             select new { stuname=s.username,sex=s.sex,age=s.age};

這是linq常用的語法from 變量 in 集合

                    Select 變量

B、方法語法

    var result1 = list.Select(s1 => new { username = s1.username, age = s1.age, sex = s1.sex });

    這就是方法語法,符合一般的C#語法

 

這兩種方法的執行結果是一樣的,唯一的區別就是語法

 

二、輸出的方式

  輸出的方式也有兩種,我們知道linq主要對集合進行操作的,所以一般都需要循環輸出

 第一種輸出方式:

         string stt = null;

        foreach (var sa in result3)

        {

            stt += sa.username;

        }

        Response.Write(stt);

這是我們經常用到的foreach循環

 

第二種輸出方式:

  result.ToList().ForEach(s => { Response.Write(s.stuname+s.sex+s.age); });

這種方式很簡介,直接調用ForEach方法,方法體內是一個limba表達式

另外說明下ToList()方法作用,在linq中有種延遲執行,就是當我們在fromselect時候,返回的結果並沒有執行,當我們循環調用的時候才執行,這就是延遲執行,有時候為了立即執行,我們需要用到ToList()

 

三、下面就來簡單說說linq常用的幾種查詢

1、條件選擇查詢(where)

   比如我們要查詢年齡大於26的學生,可以這樣寫

var result = from s in list

                     where s.age>26     //條件查詢

                 select s.username;

或者這樣寫

   var result2 = list.Where(s => s.age > 25);   //條件查詢  

2、   查詢排序

比如我們要按照學生年齡倒序排列查詢

var result = from s in list

                     orderby s.age descending    //排序

                     where s.age>26     //條件查詢

                  select s.username;

或者這樣寫

var result3 = list.OrderByDescending(s1 =>s1.age);

 

3、   數據查詢分頁顯示

使用了SkipTake方法

Skip作用跳過指定數量的元素

Take的作用是返回指定位置連續數量的元素

      var list1 = GetList(50);

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

        {

            Response.Write("這是第" + (i + 1) + "");

            var result = from s in list.Skip(i * 10).Take(10)

                         select s;

            result.ToList().ForEach(s => { Response.Write(s); });

    }

這就是分5頁,每頁顯示10個的分頁方式

 

4|、返回單個元素

   用到First()FirstOrDefault(),single,singleOrDefault()

   First():返回第一個元素,如果沒有,則拋出異常

   FirstOrDefault():返回第一個元素,如果沒有,則返回空,一般情況下會返回null

   Single:返回的是元素中唯一的元素,如果小於一條,則拋出異常

   singleOrDefault:返回的是元素中唯一的元素,如果小於一條,則返回空,通常是null

     var result1 = from r in list1

                      select r;

        var rt = result1.First();

result1.Single()

 

 

上面只是簡單的介紹了下linq的用法,具體項目中用到了,在具體對待

 

下載: /Files/shuang121/linq的基本操作.doc

      linq to sql操作

     

           


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM