



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第c#中查詢表達(dá)式GroupBy的使用方法c#中實(shí)現(xiàn)IEnumerableT接口的類提供了很多擴(kuò)展方法,其中Select,Where等為最常見的,且?guī)缀鹾蚐ql語法類似比較好理解,基本滿足了日常處理集合的大部分需求,然而還有一部分稍有不一樣理解起來比較拗,實(shí)際分析一下實(shí)現(xiàn)的原理倒也很好理解,本篇文章介紹一下GroupBy的使用方法。
實(shí)驗(yàn)基礎(chǔ)數(shù)據(jù)用例:
Student類:
publicclassStudent
publicintStuId{get;set;}
publicstringClassName{get;set;}
publicstringStudentName{get;set;}
}
設(shè)定數(shù)據(jù)如下:
ListStudentstudentList=newListStudent
newStudent{ClassName="軟工一班",StudentName="康巴一",StuId=1},
newStudent{ClassName="軟工一班",StudentName="康巴二",StuId=2},
newStudent{ClassName="軟工一班",StudentName="康巴三",StuId=3},
newStudent{ClassName="軟工二班",StudentName="康定一",StuId=4},
newStudent{ClassName="軟工二班",StudentName="康定二",StuId=5},
newStudent{ClassName="軟工二班",StudentName="康定三",StuId=6},
};
我們假設(shè)兩個(gè)班里的學(xué)生總共有六名,現(xiàn)在根據(jù)班級分組
IEnumerableIGroupingstring,StudentstudentGroup=studentList.GroupBy(s=s.ClassName);
如代碼,調(diào)用GroupBy擴(kuò)展方法后,返回類型為IEnumerableIGroupingstring,Student,IEnumerable代表了返回結(jié)果可被foreach遍歷,其中泛型實(shí)現(xiàn)為IGroupingstring,Student,按照普遍理解的分組的概念,可以推斷IGrouping中應(yīng)該是string代表的是一個(gè)key,即ClassName,那么key對應(yīng)的應(yīng)該就是一個(gè)Student的集合,但是代碼應(yīng)該怎樣實(shí)現(xiàn)呢?
可以首先foreach一下studentGroup
foreach(IGroupingstring,StudentiteminstudentGroup)
}
這時(shí)候可以item.一下看看提示信息
這時(shí)候發(fā)現(xiàn),只能提示出來的屬性只有一個(gè)key,那么怎樣通過item獲取到分組后的Student集合呢?這時(shí)候發(fā)現(xiàn)第二個(gè)GetEnumerator()方法,這個(gè)說明了item是可以被foreach的,類型為IEnumeratorStudent,說明了可被遍歷的類型為Student
然后可以foreach下item試一試
如果所示,果然是Student,根據(jù)推斷,現(xiàn)在在foreach中遍歷所有數(shù)據(jù),然后打出來看一下
foreach(IGroupingstring,StudentiteminstudentGroup)
Console.WriteLine(item.Key);
foreach(varstudentinitem)
Console.WriteLine(student.StudentName);
}
執(zhí)行結(jié)果如下:
所以可以斷定item是一個(gè)Student的集合,那么為什么item還有個(gè)key屬性呢,好像是和平常的集合不太一樣,事實(shí)確實(shí)是不一樣的,我們看下IGrouping的定義如下:
publicinterfaceIGroupingoutTKey,outTElement:IEnumerableTElement,IEnumerable
///summary
///獲取seecref="T:System.Linq.IGrouping`2"/的鍵。
////summary
///
///returns
///seecref="T:System.Linq.IGrouping`2"/的鍵。
////returns
[__DynamicallyInvokable]
TKeyKey{[__DynamicallyInvokable]get;}
}
IGrouping的key是作為自己的屬性來存儲了,TElement則實(shí)現(xiàn)了IEnumerableTElement,所以調(diào)用foreach遍歷IGroupi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年心理健康教育課程考試試題
- 幼兒園指南試題及答案
- 管工進(jìn)場考試題及答案
- 保險(xiǎn)儲備面試題及答案
- 書法教師試題及答案
- 電子電路設(shè)計(jì)考試題目及解析
- 網(wǎng)絡(luò)工程師綜合能力試題及答案
- 常見網(wǎng)絡(luò)設(shè)備的性能對比與試題及答案
- 網(wǎng)絡(luò)工程師技術(shù)難題試題及答案
- 軟件設(shè)計(jì)的重要性與考試試題及答案
- 2024年全國黃金行業(yè)職業(yè)技能競賽(礦山救護(hù)工)理論考試題庫(含答案)
- 銑床主軸箱設(shè)計(jì)
- 刑法總論:刑事法治的中國特色智慧樹知到答案2024年湘潭大學(xué)
- 鋼琴調(diào)律服務(wù)合同
- 愛國英雄霍去病歷史人物介紹
- 冠心病合并房顫患者PCI術(shù)后抗栓治療策略
- 2024年燕舞集團(tuán)限公司公開招聘高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 2024年中考道德與法治時(shí)事政治試題庫附答案(綜合題)
- 從自在、自覺到自為:中華民族發(fā)展的歷史邏輯
- 游戲陪玩-模板參考
- 篷布檢測報(bào)告
評論
0/150
提交評論