您好,登錄后才能下訂單哦!
Linq 多列分組問題,是非常常見的需求。下面引用論壇某位壇友提出的問題:
班級 課程 老師
A 高一班 英語 小王
B 高二班 英語 小王
C 高一班 英語 小張
結(jié)果:
班級 課程 老師
A 高一班 英語 小王
C 高一班 英語 小張
經(jīng)過分析可以看出,根據(jù)課程和老師進(jìn)行分組,重復(fù)的取第一行的數(shù)據(jù)。傳統(tǒng)的方法可能要寫很多代碼,而用Lambda或者Linq只需要幾行代碼就能實(shí)現(xiàn)。
完整代碼如下:
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Data[] data = new Data[] { new Data(){班級="高一班", 課程="英語", 老師="小王"}, new Data(){班級="高二班", 課程="英語", 老師="小王"}, new Data(){班級="高一班", 課程="英語", 老師="小張"}, new Data(){班級="高一班", 課程="英語", 老師="小張"}, }; //方式1:Lambda var resultLambda = data.GroupBy(x => new { 課程 = x.課程, 老師 = x.老師 }).Select(x => x.FirstOrDefault()); resultLambda.ToList().ForEach(x => Console.WriteLine(string.Join(",", x.班級, x.課程, x.老師))); //方式2:Linq var resultLinq = from p in data group p by new { p.課程, p.老師 } into g select new { 班級 = g.FirstOrDefault().班級, 課程 = g.Key.課程, 老師 = g.Key.老師, }; resultLinq.ToList().ForEach(x => Console.WriteLine(string.Join(",", x.班級, x.課程, x.老師))); } } public class Data { public string 班級 { get; set; } public string 課程 { get; set; } public string 老師 { get; set; } } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。