Group By 使用方法

2015年1月8日 星期四

最近遇到一個操作集合物件時,需要做群組的功能,以前都是在SQL裡操作

今天透過Linq的Group By方法來實作,順便記錄一下。


測試資料結構



Group By後結果



//放入測試資料
var testList = new List();
testList.Add("event1,s11,1");
testList.Add("event1,s12,1");
testList.Add("event1,s13,1");
testList.Add("event1,s14,1");
testList.Add("event1,s15,1");
testList.Add("event2,s21,1");
testList.Add("event2,s22,1");

//處理資料格式
var sourceList = new List>();
foreach (var item in testList)
{
    var querySplit = item.Split(',');
    string eventId = querySplit[0];
    string selectionId = querySplit[1];
    string handicap = querySplit[2];

    var list = new KeyValuePair(eventId, string.Format("{0}#{1}", selectionId, handicap));
    sourceList.Add(list);
}

//利用Group By 放入Dictionary物件裡
Dictionary> mList = sourceList.GroupBy(p => p.Key,p=>p.Value)
    .ToDictionary(p => p.Key, p => p.Select(s => s)
    .ToList());

最後呈現結果如下:

轉換完成後Dictionary的Key就是event,Value就是該Event下的記錄 。

參考來源:http://www.dotblogs.com.tw/lastsecret/archive/2011/02/18/21422.aspx

0 意見: