値の文字列を渡すために呼び出す必要がある制裁 API があります。これらの値は次のように構成されます。
string searchString = string.Join(" ", myList.ToArray());
// remove any numbers and return complete words
MatcCollection strMatch = Regex.Matches(searchString, @"[^\W\d]+");
var values = strMatch.Cast<Group>().Select(g => g.Value).ToArray();
var combinations = values.Permutations();
これで、必要な配列が得られたので、以下の Permutations メソッドを呼び出します。
public static IEnumerable<IEnumerable<T>> Permutations<T>(this IEnumerable<T> source)
{
if (source == null)
throw new ArgumentException("source");
return permutations(source.ToArray());
}
順列メソッドは次のとおりです。
private static IEnumerable<IEnumerable<T>> permutations<T>(IEnumerable<T> source)
{
var c = source.Count();
if (c == 1)
yield return source;
else
for (int i = 0; i < c; i++)
foreach (var p in permutations(source.Take(i).Concat(source.Skip(i + 1))))
yield return source.Skip(i).Take(1).Concat(p);
}
7 項目 {one,two,three,four,five,six,seven} のリストの例では、このコードは 7 つの要素の長さの多数のリストを返します。
私が作成する必要があるのは次のとおりです。
最初の反復:
結果を返す = 1
2 回目の繰り返しの戻り値 = one + ' ' + two
などなど
SOの投稿から上記のサンプルコードを取得したので、必要なものを取得するために適切に変更する方法がわかりません。