#c# #linq
#c# #linq
Вопрос:
У меня есть простой код, который проектирует перестановку заданного строкового аргумента. Мне нужно изменить запрос из этого кода с синтаксиса запроса LINQ на синтаксис метода. Буду признателен за любую помощь.
public static List<string> SinglePermutations(string s)
{
var result = new List<string> { "" };
foreach (var c in s)
{
result = (from r in result
from a in s
select $"{r}{a}").ToList();
}
}
Комментарии:
1. Из любопытства, зачем вам это нужно?
2. просто для изучения и лучшего понимания вложенных методов.
Ответ №1:
Resharper на помощь:
public static IEnumerable<string> SinglePermutations(string s)
{
return s.Aggregate(result, (current, c) => current.SelectMany(r => s, (r, a) => $"{r}{a}")
.ToList());
}
Комментарии:
1. Большое спасибо! . Я использую VS без ReShaper. Так что, я думаю, мне нужно потратить несколько минут, чтобы разобраться в вашем коде.
Ответ №2:
Resharper, без преобразования для цикла. Итак, один шаг до ответа @kalu93.
public static List<string> SinglePermutations(string s)
{
var result = new List<string> { "" };
foreach (var c in s)
{
result = (result.SelectMany(r => s, (r, a) => $"{r}{a}")).ToList();
}
return resu<
}