我該如何用一個優雅的LINQ語句替換ConvertListToString(extensions)
?如何將此12行方法轉換爲單行LINQ表達式?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestExtn2343
{
class Program
{
public static void Main(string[] args)
{
string[] files = { "test.txt", "test2.txt",
"test.as", "notes.doc",
"data.xml", "test.xml",
"test.html", "notes.txt",
"test.xls" };
List<string> extensions = (from file in files
let index = file.LastIndexOf('.') + 1
select file.Substring(index)).Distinct().ToList<string>();
Console.WriteLine("The kinds of file extensions used are {0}.", ConvertListToString(extensions));
Console.ReadLine();
}
public static string ConvertListToString(List<string> list) {
StringBuilder sb = new StringBuilder();
int count = 1;
foreach (var listItem in list)
{
sb.Append(listItem.ToUpper());
if (count != list.Count)
sb.Append(", ");
count++;
}
return sb.ToString();
}
}
}
這是比我更好的答案,因爲這會將他更多的原始代碼替換爲Linq,而不僅僅是回答他的確切問題。我的投票在這裏。 – 2009-11-05 12:49:35
錯!這是2行。 – 2009-11-05 12:58:08
請注意,這也是一個很好的例子,說明爲什麼儘快接受答案並不是一個好主意。相反,即使您決定自己希望儘早使用哪個答案,也應該將問題留出一段時間,以查看是否有更好的答案冒泡到頂端。 – 2009-11-05 13:04:14