LinQ的ToLookUp練習
我們在做專案時,常常會遇到下面這種狀況
public class Data
{
public decimal id { get; set; }
public string name { get; set; }
public string message { get; set; }
}
private static List<Data> GenData()
{
List<Data> d = new List<Data>(){
new Data(){id=1, name="阿扁",message="我是1號"},
new Data(){id=2, name="阿扁",message="我是男生"},
new Data(){id=3, name="阿扁",message="民進黨"},
new Data(){id=4, name="英久",message="我是2號"},
new Data(){id=5, name="英久",message="我是男生"},
new Data(){id=6, name="英久",message="國民黨"},
new Data(){id=7, name="登輝",message="我是3號"},
new Data(){id=8, name="登輝",message="親民黨"},
};
return d;
}
就是要將資料以Name的形式做Group,而message以逗號隔開
做法有二種,第一種是用T-Sql,而這裡我們介紹是用ToLookUp,直接看範例
/// <summary>
/// 使用ToLookUp
/// </summary>
private static void Method1()
{
string temp = "";
List<Data> data = GenData();
Dictionary<string, string> d = new Dictionary<string, string>();
//使用ToLookUp
var c = (from i in data
select new { i.id, i.name, i.message }).ToLookup(x => x.name);
//置入字典檔
foreach (var group in c)
{
temp = "";
foreach (var item in group)
temp += item.message + ",";
d.Add(group.Key, temp);
}
//顯示結果
foreach (KeyValuePair<string, string> item in d)
{
Console.WriteLine(string.Format("姓名:{0} 訊息:{1}", item.Key, item.Value));
}
Console.Read();
}
顯示的結果
是不是很方便呢~~如果還有其它更好的方法可以一起討論唷 ^ ^