Comment puis-je remplacer ConvertListToString(extensions)
par une instruction LINQ élégante?Comment puis-je transformer cette méthode de 12 lignes en une expression LINQ à une ligne?
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();
}
}
}
Ceci est une meilleure réponse que la mienne, car cela remplace plus de son code original avec Linq, plutôt que de simplement répondre à sa question exacte. Mon vote va ici. –
Mauvais! C'est 2 lignes. –
Notez qu'il s'agit également d'un très bon exemple de pourquoi il n'est pas judicieux d'accepter les réponses aussi rapidement que possible.Au lieu de cela, même si vous décidez de la réponse que vous souhaitez utiliser vous-même, laissez la question ouverte un peu plus longtemps pour voir si les meilleures réponses arrivent en haut. –