一遍學習基礎,一遍練習打字,很多樂趣。
**
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.reflection;
namespace
dazilianxi
public
string name
}public
class
product
public
string name
public category category
public datetime buydate
public
decimal price
public
override
string
tostring()
}public
static
class
producthelper
,new product(),
new product(),
new product()
};return
list;}}
public
class productcomparer : icomparer, iequalitycomparer//
居然要具體的類
else
//如果類別名稱不同,比較類別的編號
}public
bool
equals(product x, product y)
else
}//這個是介面裡的,一定要實現
public
intgethashcode(product obj)
}public
class propertycomparer: iequalitycomparer 不是的屬性
", propertyname, typeof
(t)));}}
public
bool
equals(t x, t y)
public
intgethashcode(t obj)}}
}
var query = producthelper.getproducts().orderby(x=>x.id).orderby(b=>b.buydate).orderbydescending(c=>c.category.id).thenby(p=>p.price);showconsole(query);
var query2 = producthelper.getproducts().select((x, index) => new );//
這裡用到了乙個匿名物件
foreach(var item in
query2),索引
",item.name,item.index);
}var query3 = producthelper.getproducts().orderby(x => x, new
productcomparer());
showconsole(query3);
list
list = new list()
;var query4 = list.skip(7).take(5
); showconsole
(query4);
console.writeline(
"-------");
var query5 = list.takewhile(x => x <= 5).takewhile(x => x > 1);//
3showconsole(query5);
console.writeline(
"-------");
var query6 = list.takewhile(x => x <= 5).where(x => x > 1);//
3,2,3,4,5
showconsole(query6);
console.writeline(
"-------");
var query7 = list.takewhile(x => x <= 5).where(x => x > 1).distinct();//
3,2,4,5 去重
showconsole(query7);
console.writeline(
"-------");
int arr1 = ;
int arr2 = ;
var query8 = arr1.intersect(arr2);//
取交集2,3
showconsole(query8);
console.writeline(
"-------");
var query9 = arr1.except(arr2);//
except()獲取第乙個集合中有,而第二個集合中沒有的元素 0,1
showconsole(query9);
console.writeline(
"-------");
var query10 = arr1.concat(arr2); //
concat()將2個集合串聯起來,不剔除重複元素
showconsole(query10);
console.writeline(
"-------");
var query11 = arr1.union(arr2); //
union()將2個集合串聯起來,剔除重複元素
showconsole(query11);
console.writeline(
"-------");
//zip()合併2個集合中位置相同的元素,將2個元素的操作結果返回乙個新的元素。如果兩個集合的長度不相等,以長度短的為準。
int arr11 = ;
string arr22 = ;
var query12 = arr11.zip(arr22, (x, y) => string.format(","
, x, y));
showconsole
(query12);
private
static
void showconsole(ienumerablelist)
}
總結:● 一般性的條件篩選:where()
● 返回具體的集合型別再進行鏈式操作:oftype()
● 非泛型集合轉換成泛型集合後再使用linq操作符:cast()
● 排序、鏈式排序:orderby(), thenby(),實現icomparer介面可以自定義排序規則
● 投影:select()
● 返回前n個,跳過n個,分頁:take()和skip()
● 返回符合/不符合條件,但不執行完遍歷:takewhile()和skipwhile()
● 反轉集合元素:reverse()
● 空集合處理:defaultifempty()
● 剔除集合中的重複元素:distinct(),實現iequalitycomparer可自定義相等規則,針對某具體類或寫乙個泛型方法
● 分組以及分組後投影:groupby()
● 2個集合的交集:intersect()
● 2個集合的查集:except()
● 2個集合的串聯:concat()和union()
● 2個集合的合併:zip()
非常基礎的知識點,只有實踐一次,才真的明白。
C 學習 LINQ 查詢
在c 中使用linq查詢需要引入命名空間using system.linq 案例實操 資料準備 var roles newlist gamerole newgamerole newgamerole newgamerole newgamerole newgamerole newgamerole var...
C 基礎 Linq提供程式
1 linq to xml 命名空間system.xml.linq 2 linq to objects 3 linq to entities linq to objects的where和linq to entities的where這個兩個類都在system.linq命名空間的system.core程...
理解Linq查詢
using system using system.linq static class program public static void main var query from n in numbers select square n query只是乙個語句,下面的foreach才執行內容 fo...