我该如何用一个优雅的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