說我有一個對象列表,並且該對象有一個字符串屬性。我想獲得列表中每個對象的每個字符串屬性的值的逗號分隔列表。 這裏是1個辦法做到這一點(沒有LINQ)另一個臨牀問題
StringBuilder result = new StringBuilder()
foreach(myObject obj in myList)
{
result.Append(obj.TheString);
result.Append(", ");
}
// then trim the trailing ", " and call ToString() on result, etc, etc...
這是我在linqification第一槍。有沒有更好的辦法?
string result = string.Join(", ", myList.Select(myObj => myObj.TheString).ToArray());
這是一行代碼,但它看起來並不非常有效,我 - 只是想迭代列表建立一個數組,只是遍歷數組,並建立一個字符串...呼!
有沒有更好的方法?
+1真正喜歡這樣的答案,顯示Linq可以做什麼!令我着迷的是,你可以將結果的類型設置爲StringBuilder(當然在移除.ToString()後)並設置一個斷點,並且在轉換爲字符串之前找到Linq評估已經完成......這增加了我對此的困惑在Linq中稱爲「延期評估」......但這不是你的問題! :)我將你的解決方案包裝在一個方法中,然後使用StringBuilder.Remove在轉換爲字符串之前擺脫最終的額外空間和逗號。將嘗試將其作爲擴展方法。謝謝 ! – BillW 2009-12-17 07:36:49
延遲評估推遲產生'StringBuilder',但是'StringBuilder'本身並沒有被延期 - 儘管沒有什麼能夠避免編寫一個懶惰的'StringBuilder'(理論上它也很可能有基本的字符串懶惰,儘管這需要CLR支持)。 – 2009-12-17 18:39:02