linq和lambda基本操作

2022-09-12 08:09:13 字數 2047 閱讀 3386

一、linq有兩種語法:

1、 方法語法

2、 查詢語法

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

比如現在有乙個學生類

public class student

public int age

public string ***

}我們通過乙個方法來新增很多同學

public ilistgetstu(int n)

return stulist;

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

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

a、查詢語法:

var list = getstu(10);

var result = from s in list

select new ;

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

select 變數

b、方法語法

var result1 = list.select(s1 => new );

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

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

二、輸出的方式

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

第一種輸出方式:

string stt = null;

foreach (var sa in result3)

response.write(stt);

這是我們經常用到的foreach迴圈

第二種輸出方式:

result.tolist().foreach(s => );

這種方式很簡介,直接呼叫foreach方法,方法體內是乙個limba表示式

另外說明下tolist()方法作用,在linq中有種延遲執行,就是當我們在from…select時候,返回的結果並沒有執行,當我們迴圈呼叫的時候才執行,這就是延遲執行,有時候為了立即執行,我們需要用到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、 資料查詢分頁顯示

使用了skip和take方法

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

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

var list1 = getlist(50);

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

這就是分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 之 基本 LINQ 查詢操作

在 linq 查詢中,第一步是指定資料來源。像在大多數程式語言中一樣,必須先宣告變數,才能使用它。在 linq 查詢中,最先使用from子句的目的是引入資料來源和範圍變數。queryallcustomers 是 ienumerable型別 資料來源 customers 和範圍變數 cust var ...

Linq 查詢基本操作

from 子句 where 子句 select子句 group 子句 into 子句 orderby 子句 join 子句 let 子句 復合from子句 在某些情況下,源序列中的每個元素本身可能是序列 集合 也可能包含序列 用語訪問單個資料庫中的內部集合 使用多個from字句執行連線 可以包含多個...

LINQ和Lambda表示式

前段時間接觸了一種新的表示式,但是不知道這個是什麼意思,所以就先站在巨人的肩膀用了,現在聽師哥說這種寫法是 lambda 表示式。我一直以為,這個 lambda 表示式和 linq 查詢有異曲同工之妙,可惜,這樣想就大錯特錯了。定義語言整合查詢 language integrated query 允...