Linq Lambda GroupBy使用筆記

2022-02-07 05:04:26 字數 1657 閱讀 6162

今天看mvc遇到了groupby的lambda表示式..有興趣詳細的看下去..得此筆記..記錄之...

不羅嗦..上**...

//

得到list物件 資料來源

var groupmail = xmall.plugin.edm.utility.datacache.emailgroup.cachelist();

首先得到乙個資料來源物件

這個物件是乙個郵件分組的資料列表..依據固定的快取物件得出

分組**如下

var v2 = groupmail.groupby(o => o.valid == true

);//

將得到的資料按照某屬性進行分組

上邊我們用到的是最最簡單的分組..他得到的是乙個分組資料物件..型別為 ienumerable>..可以使用.tolist()方法將其中的資料轉換為直接讀取的數值來使用

如果有特殊需要..比如..分組之後我還要得到一組資料中對應的每乙個資料..

譬如..上邊的例項是按照資料的是否驗證來分組的..得到兩組資料..ture 或者 flase

我還想得到為ture的資料的集合..則可以將上述**進行改造..

var v2 = groupmail.groupby(o => o.valid == true, (iii, vvv) => new );

//將得到的資料按照某屬性進行分組

//並將分組後的值按照分組值存入物件

我們依然會得到兩條資料..依然可以使用 tolist()轉換..

新加的**   (iii, vvv) => new  中,,每乙個變數名稱都是自定義的..

iii     代表的我們在前邊的分組列得到的值..也就是我們的 true 和 false..  在後邊的 new{} 中..給了自定義字段 group

vvv  代表的我們在該分組內的對應資料.. 在後邊給了 groupmails..

這個groupmails我們需要說一下..他是延時載入的..本人在測試的時候..資料量比較小..沒有感覺到有什麼不同..但是資料大的話..就不知道了..很有可能 在你執行到下乙個邏輯**的時候..他還沒有載入完畢

上述的**得到的結果..在轉換為tolist之後...物件是這樣的..

v2依然可以轉換為乙個list物件..但列表裡的物件則變成了有兩個屬性.. group 和 groupmails

group裡儲存的是分組的類別..true 和flase..

groupmails物件轉換為tolist()之後..儲存的是與前邊屬性group一致的物件的集合..

也就意味著..

乙個表裡有三個true 兩個false的值..

經過這般處理之後..

得到的物件裡分成兩個物件..

乙個group為ture..groupmails的物件有3個..

另外乙個則group為false..groupmails的數量有2個..

var bb = v2.first(o => o.group == true

).groupmails.count();

//bb=3

這對於後邊的操作優點就非常顯而易見了..

你可以得到任何乙個與你操作物件有相同某個屬性的數量和實體物件了..

再也不用每乙個都去單獨查詢..方便大大滴...

linux ubuntu debian 使用筆記

基於debian的ubuntu使用apt get 可方便地進行安裝或公升級系統,分下面幾個步驟 第一步,獲得最近的軟體包的列表 列表中包含一些包的資訊,比如這個包是否更新過。第二步,如果這個包沒有發布更新,就不管它 apt get update對應的就是第一步。apt get upgrade 與ap...

Vim 使用筆記

set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...

xemacs使用筆記

xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...