#c# #.net #linq
#c# #.net #linq
Вопрос:
Как написать
string result = strings.Aggregate(new StringBuilder(), (s, a) => s.AppendLine(a)).ToString();
в from a in strings select ...
форме?
Комментарии:
1. Я не верю, что вы можете.
2. Может быть, я могу эмулировать его, используя некоторые другие ключевые слова?
3. Смотрите мой ответ для других ключевых слов.
4. Вы могли бы, но вам нужно было бы сделать это в VB вместо C #, поскольку VB поддерживает ключевые слова Aggregate, Sum, Count в качестве собственных ключевых слов запроса.
5. @Jim: Как будет выглядеть решение OP в VB с
Aggregate
ключевым словом?
Ответ №1:
Вы не можете. Смотрите Здесь список ключевых слов запроса LINQ:
http://msdn.microsoft.com/en-us/library/bb310804.aspx
Как бы вы это ни делали, вам все равно нужно будет вызвать метод ( Aggrigate
).
Ответ №2:
Как насчет решения без необходимости агрегирования вообще:
string[] strings = {"1", "2", "3"};
string result = String.Join("r", strings);
Комментарии:
1. 1; Я бы рекомендовал это в большинстве случаев, поскольку гораздо проще определить, что происходит. Linq бесценен, но иногда ваша проблема менее абстрактна. Это также не добавляет новую строку в конце (что часто предпочтительнее).
2. На самом деле у меня гораздо более сложный запрос, и вместо строк есть словари.