linq基本操作
8242 ワード
一、Linqには2つの文法があります.
1、方法文法
2、クエリー構文
この2つの方法の違いを例に挙げてみましょう
例えば今学生のクラスがあります
私たちは一つの方法で多くの学生を追加します.
この方法はリスト集合を返します.次にlinqでこの集合を操作できます.
まず、すべての学生を調べてみましょう.
A、照会文法:
これはlinqでよく使われる構文from変数inの集合です
Select変数
B、方法文法
これがメソッド構文で、一般的なC#構文に合致します
この2つの方法の実行結果は同じで、唯一の違いは文法です.
二、出力の方式
出力の仕方も2種類あり、linqは主に集合を操作することを知っているので、一般的には循環出力が必要です.
第1の出力方式:
これは私たちがよく使うforeachサイクルです
第2の出力方式:
この方法は簡単で、直接ForEachメソッドを呼び出して、メソッドの体内は1つのlimba式です
さらにToList()メソッドの役割を説明すると、linqではfrom...selectの場合、返された結果は実行されず、ループ呼び出しの場合に実行されます.これは遅延実行であり、すぐに実行するためにToList()を使用する必要がある場合があります.
三、linqでよく使われるいくつかのクエリーについて簡単に説明します.
1、条件選択クエリー(where)
例えば26歳以上の学生を調べるには
あるいはこう書く
2、クエリーのソート
例えば、学生の年齢の逆順に並べて検索します.
あるいはこう書く
3、データクエリーのページング表示
SkipとTakeメソッドを使用しました
Skipの役割は指定された数の要素をスキップします
Takeの役割は、指定された位置の連続数を返す要素です.
これが5ページに分けて、1ページに10個のページング方式を表示します
4|、単一要素を返す
First()、FirstOrDefault()、single、singleOrDefault()
First():最初の要素を返し、ない場合は例外を放出します.
FirstOrDefault():最初の要素を返し、ない場合は空を返します.一般的にnullが返されます.
Single:エレメント内の唯一のエレメントを返します.1つ未満の場合は例外を放出します.
singleOrDefault:エレメント内の一意のエレメントを返し、1つ未満の場合は空を返します.通常nullです.
1、方法文法
2、クエリー構文
この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;
}
この方法はリスト集合を返します.次に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#構文に合致します
この2つの方法の実行結果は同じで、唯一の違いは文法です.
二、出力の方式
出力の仕方も2種類あり、linqは主に集合を操作することを知っているので、一般的には循環出力が必要です.
第1の出力方式:
string stt = null;
foreach (var sa in result3)
{
stt += sa.username;
}
Response.Write(stt);
これは私たちがよく使うforeachサイクルです
第2の出力方式:
result.ToList().ForEach(s => { Response.Write(s.stuname+s.sex+s.age); });
この方法は簡単で、直接ForEachメソッドを呼び出して、メソッドの体内は1つの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++)
{
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ページに分けて、1ページに10個のページング方式を表示します
4|、単一要素を返す
First()、FirstOrDefault()、single、singleOrDefault()
First():最初の要素を返し、ない場合は例外を放出します.
FirstOrDefault():最初の要素を返し、ない場合は空を返します.一般的にnullが返されます.
Single:エレメント内の唯一のエレメントを返します.1つ未満の場合は例外を放出します.
singleOrDefault:エレメント内の一意のエレメントを返し、1つ未満の場合は空を返します.通常nullです.
var result1 = from r in list1
select r;
var rt = result1.First();
result1.Single()