我有一个需要调用的制裁 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 个项目的示例列表 {一、二、三、四、五、六、七},此代码返回多个长度为 7 个元素的列表。
我需要创建的是以下内容:
第一次迭代:
返回结果=一
第二次迭代返回结果 = 一 + ' ' + 二
等等等等
我从 SO 上的帖子中获得了上面的示例代码,所以不知道如何正确更改它以获得我需要的东西。