C 的GroupBy方法是如何工作的

2022-06-28 02:39:13 字數 2077 閱讀 1827

class

student

}

liststudents = new list();

for (int i = 0; i < 3; i++)

for (int i = 0; i < 3; i++)

其中有3個1年級,3個2年級

static

intgetgrade(student stu)

分組方法將會呼叫此方法,得到分組依據

//

學生年級相等比較器,如果分組關鍵字使用了學生物件,那麼這裡就可以用學生的其他屬性進行相等比較,比如學生id

class studentcomparer : iequalitycomparer

else

}public

int gethashcode(int

x)

}

分組比較器將會對分組關鍵字進行比較,得到分組

//

給groupby傳入分組方法,tolist()執行分組時,程式對元素集中的每個元素呼叫"相等比較器"進行分組

//得到乙個包含幾個分組物件igrouping的列舉物件ienumerable

//每個分組物件igrouping的屬性是:(分組鍵值,分組元素集)

//因此groupby方法屬於js中的高階方法,就像map,reduce等

//可以自定義"相等比較器"iequalitycomparer,自定義相等判斷規則

ienumerableint,student>> d = students.groupbyint>(getgrade,new studentcomparer()).tolist();

分組器將會採用乙個盡可能減少比較次數的演算法,使用比較器對分組關鍵字比較

在這個例子中,6個學生分兩組只進行了4次比較,第一直覺是應該會用5次比較

foreach (igrouping item in

d)

}console.writeline(

"系統的比較方法很厲害,只用4次比較,將6個元素分成了2組,採用2分法的方式似乎可以");

console.readline();

class

program

for (int i = 0; i < 3; i++)

//var d = students.groupby(t => t.grade);

//對studentlist按照classcode分組

//給groupby傳入分組方法,tolist()執行分組時,程式對元素集中的每個元素呼叫"相等比較器"進行分組

//得到乙個包含幾個分組物件igrouping的列舉物件ienumerable

//每個分組物件igrouping的屬性是:(分組鍵值,分組元素集)

//因此groupby方法屬於js中的高階方法,就像map,reduce等

//可以自定義"相等比較器"iequalitycomparer,自定義相等判斷規則

ienumerableint,student>> d = students.groupbyint>(getgrade,new

studentcomparer()).tolist();

foreach (igrouping item in

d)

}console.writeline(

"系統的比較方法很厲害,只用4次比較,將6個元素分成了2組,採用2分法的方式似乎可以");

console.readline();

}static

intgetgrade(student stu)

}class

student

}//學生年級相等比較器,如果分組關鍵字使用了學生物件,那麼這裡就可以用學生的其他屬性進行相等比較,比如學生id

class studentcomparer : iequalitycomparer

else

}public

int gethashcode(int

x)

}

WinCE的Boot Loader是如何工作的

wince的boot loader是如何工作的 前提 此boot loader是位於nor flash的零位址的,cpu配置成復位後在此執行。1.前期cpu初始化 l 進入超級使用者模式 supervisor mode 顯式通過軟體指令初始化進入。l 清除指令和資料cache。l 清除tlbs tr...

group by 方法的使用

有時候,你也許需要將乙個陣列中的元素根據某種規則進行分組。那麼group by方法就是很好的選擇。先來看下面的例子 a 1.20 to a 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 a.group by 0,1,2,3,4 1,5,6,7,...

JS中的groupBy方法

最近工作中需要寫一些運營資料包表的頁面,後端返回的資料都是未處理過的json,所以,大量的運算任務交給了前端來做,這其中有乙個功能就是對資料進行分組,一開始我自己也嘗試寫了一些,但 量比較大,顯得很繁瑣,直到後來在stackoverflow上看到了某位大牛寫的方法,非常簡潔優雅,如下 functio...