Por 'maneira super bacana do LINQ ', você pode estar falando sobre o modo como o LINQ torna a programação funcional muito mais agradável com o uso de métodos de extensão. Quero dizer, o açúcar sintático que permite que as funções sejam encadeadas de maneira visualmente linear (uma após a outra) em vez de aninhar (uma dentro da outra). Por exemplo:
int totalEven = Enumerable.Sum(Enumerable.Where(myInts, i => i % 2 == 0));
pode ser escrito assim:
int totalEven = myInts.Where(i => i % 2 == 0).Sum();
Você pode ver como o segundo exemplo é mais fácil de ler. Você também pode ver como mais funções podem ser adicionadas com menos problemas de recuo ou os pontos de fechamento do Lispy aparecendo no final da expressão.
Muitas das outras respostas afirmam que esse String.Join
é o caminho a seguir, porque é a mais rápida ou mais simples de ler. Mas se você entender minha interpretação de ' maneira LINQ super bacana ', a resposta é usá-la, String.Join
mas envolva-a em um método de extensão no estilo LINQ que permitirá que você encadeie suas funções de uma maneira visualmente agradável. Então, se você quiser escrever, sa.Concatenate(", ")
basta criar algo como isto:
public static class EnumerableStringExtensions
{
public static string Concatenate(this IEnumerable<string> strings, string separator)
{
return String.Join(separator, strings);
}
}
Isso fornecerá um código com desempenho tão alto quanto a chamada direta (pelo menos em termos de complexidade do algoritmo) e, em alguns casos, poderá tornar o código mais legível (dependendo do contexto), especialmente se outro código do bloco estiver usando o estilo de função em cadeia .