Под « супер-классным способом LINQ » вы можете говорить о том, как LINQ делает функциональное программирование намного более приемлемым с использованием методов расширения. Я имею в виду синтаксический сахар, который позволяет связывать функции визуально линейным способом (один за другим) вместо вложения (один внутри другого). Например:
int totalEven = Enumerable.Sum(Enumerable.Where(myInts, i => i % 2 == 0));
можно написать так:
int totalEven = myInts.Where(i => i % 2 == 0).Sum();
Вы можете видеть, как второй пример легче читать. Вы также можете увидеть, как можно добавить больше функций с меньшим количеством проблем с отступами или закрывающих слов в Lispy, появляющихся в конце выражения.
Многие другие ответы утверждают, что String.Join
это путь, потому что он самый быстрый или простой для чтения. Но если вы возьмете мою интерпретацию « супер-крутого пути LINQ », то ответ будет использовать, String.Join
но оберните его в метод расширения стиля LINQ, который позволит вам связать ваши функции визуально приятным способом. Так что если вы хотите написать, sa.Concatenate(", ")
вам просто нужно создать что-то вроде этого:
public static class EnumerableStringExtensions
{
public static string Concatenate(this IEnumerable<string> strings, string separator)
{
return String.Join(separator, strings);
}
}
Это обеспечит код, который является таким же быстродействующим, как и прямой вызов (по крайней мере, с точки зрения сложности алгоритма), и в некоторых случаях может сделать код более читабельным (в зависимости от контекста), особенно если другой код в блоке использует стиль связанной функции ,