Mówiąc „ super fajny sposób LINQ ”, możesz mówić o tym, jak LINQ sprawia, że programowanie funkcjonalne jest o wiele smaczniejsze przy użyciu metod rozszerzenia. Mam na myśli cukier syntaktyczny, który pozwala na łączenie funkcji w wizualnie liniowy sposób (jeden po drugim) zamiast zagnieżdżania (jeden wewnątrz drugiego). Na przykład:
int totalEven = Enumerable.Sum(Enumerable.Where(myInts, i => i % 2 == 0));
można napisać w ten sposób:
int totalEven = myInts.Where(i => i % 2 == 0).Sum();
Możesz zobaczyć, jak drugi przykład jest łatwiejszy do odczytania. Możesz także zobaczyć, jak można dodać więcej funkcji przy mniejszej liczbie problemów z wcięciem lub Lispy zamykających pojawiających się na końcu wyrażenia.
Wiele innych odpowiedzi String.Join
mówi, że jest to najlepsza droga, ponieważ jest najszybsza lub najprostsza do odczytania. Ale jeśli weźmiesz moją interpretację „ super fajnego sposobu LINQ ”, odpowiedzią jest użycie, String.Join
ale zapakuj ją w metodę rozszerzenia w stylu LINQ, która pozwoli ci połączyć twoje funkcje w przyjemny wizualnie sposób. Więc jeśli chcesz pisać, sa.Concatenate(", ")
musisz po prostu stworzyć coś takiego:
public static class EnumerableStringExtensions
{
public static string Concatenate(this IEnumerable<string> strings, string separator)
{
return String.Join(separator, strings);
}
}
Zapewni to kod, który jest tak samo wydajny jak bezpośrednie wywołanie (przynajmniej pod względem złożoności algorytmu), aw niektórych przypadkach może sprawić, że kod będzie bardziej czytelny (w zależności od kontekstu), szczególnie jeśli inny kod w bloku używa stylu funkcji łańcuchowej .