2013年12月24日 星期二

使用 Linq 的 Distinct() 方法

過去對於要在一個字串中( ex: "A,A,B,C," )取得不重複的組合,不動大腦的方式就是跑迴圈吧!真正要開始寫的時候,心裡就會再嘀咕說:「可是還要寫很多行ㄟ...」



想起微軟不是很貼心,有出個 Linq 嗎?是不是可以幫上忙呢?於是上網查了一下, Linq 還真的有 Distinct() 的方法哩!整理後發現,只需要一行就可以輕鬆完成了。

string str = "A,A,B,C,";
var result = (from p in str.Split(',') where p!="" select p).Distinct();

對於這樣的結果,心情還真的激昂澎湃啊!
於是把剩下的程式完成後,結果如下:

//宣告測試字串
string str = "A,A,B,C,";

//將字串 split 為陣列
//再透過 linq 取得不等於空白,且不重複的項目 (Distinct)
var result = (from p in str.Split(',') where p!="" select p).Distinct();

//讀出 result 裡的內容
StringBuilder sb=new StringBuilder();
foreach (string s in result)
     sb.Append(s + ",");

//列印在畫面上
Console.WriteLine(sb.ToString().TrimEnd(','));
Console.ReadKey();

參考:
01:LINQ - DISTINCT的使用
02:LINQ to Object Distinct (移除資料相同的物件)


沒有留言:

張貼留言