linq distinct
ienumerable> query1 = from e in jv
group e by new into g
select g.tolist();
這段**可以得到乙個范型的集合(根據reportid分組後的范型集合),通過foreach能夠取出進行操作。
foreach (listreportnames in query1)
emptylist.add(reportnametemp);
}
參考文章:
linq 用來實現集合(list, datatable等) 的二次操作十分簡便,這裡介紹下用 linq 對集合進行 distinct 操作的幾種方法。
0. 準備資料:
+ expand source
view plain
1. 使用groupby:對需要distinct的字段進行分組,取組內的第一條記錄這樣結果就是distinct的資料了。
view plain
console.writeline(
"distinct1 by: a"
);
var query1 = from e in
user.getdata()
group e by new
into g
select g.firstordefault();
foreach
(var u
inquery1)
console.writeline(u.tostring());
2. 使用distinct()擴充套件方法:需要實現iequalitycomparer介面。
view plain
class
usercompare : iequalitycomparer
public
intgethashcode(user obj)
} view plain
console.writeline(
"distinct2 by: a,b"
);
var compare = new
usercompare();
var query2 = user.getdata().distinct(compare);
foreach
(var u
inquery2)
console.writeline(u.tostring());
上面的實現中要注意gethashcode()方法直接用obj.gethashcode()的話,distinct不能正常執行。
3. 自定義擴充套件方法distinctby(this ienumerable source, func keyselector)
view plain
public
static
class
myenumerableextensions
} } }
view plain
console.writeline(
"distinct3 by: a,b,c"
);
var query3 = user.getdata().distinctby(x => new
);
foreach
(var u
inquery3)
console.writeline(u.tostring());
執行結果:
a b c d
a2,b1,c1,d1
a1,b2,c1,d1
a1,b1,c1,d1
a1,b1,c2,d1
a1,b1,c1,d2
----------------
distinct1 by: a
a1,b1,c1,d1
a2,b1,c1,d1
----------------
distinct2 by: a,b
a1,b1,c1,d1
a2,b1,c1,d1
a1,b2,c1,d1
a1,b1,c2,d1
a1,b1,c1,d2
----------------
distinct3 by: a,b,c
a1,b1,c1,d1
a2,b1,c1,d1
a1,b2,c1,d1
a1,b1,c2,d1
----------------
乙個乙個的輸入資料
有兩個需要注意的點 1.while中的內容 whlie ch getchar 0 ch eof 注意這兩個書寫的形式是不一樣的 2.while中就不用再寫getchar了,因為while中本身就有ch getchar 輸入描述 一行,字串行,包含a或b,輸入以字元0結束。輸出描述 一行,乙個字元,a...
乙個決定,乙個轉折
距離2012年9月已經是第四個年頭,對於我,我想這是我這輩子做的第一件我很自豪,很開心的乙個決定,從生物轉向計算機,一直以來,我對自己的期望總是很高,比如說上高中的時候,希望自己至少考個二本,學習個自己喜歡的專業,然後為之奮鬥,有乙個非常激動人心的大學四年,再比如說以後賺很多很多錢,擁有屬於自己的公...
關於乙個加法優化的乙個地方
include include include base.h int main int argc,char argv,char envp 下面是彙編 01291000 55 push ebp 01291001 8bec mov ebp,esp 01291003 56 push esi 0129100...