C# 连接N个列表中的项

C# 连接N个列表中的项,c#,linq,C#,Linq,我有一组项目,如-stringitem=“a,b,c+1,2,3,4+z,x” 我用+拆分这个字符串,并将N个列表添加为 List keysList=item.Split('+').ToList() 从这个列表中,我希望创建键 a1z a1x a2z a2x a3z a3x等:- 我试过下面的代码块。但这里有点不对劲 private string GetValue(List<string> keysList, int i, int keyCount, string mainKey)

我有一组项目,如-stringitem=“a,b,c+1,2,3,4+z,x”

我用+拆分这个字符串,并将N个列表添加为 List keysList=item.Split('+').ToList()

从这个列表中,我希望创建键

a1z

a1x

a2z

a2x

a3z

a3x等:-

我试过下面的代码块。但这里有点不对劲

private string GetValue(List<string> keysList, int i, int keyCount, string mainKey)
{
    List<string> tempList = keysList[i].Split(',').ToList();
    foreach (string key in tempList)
    {
        mainKey += key;
        i++;
        if (i == keyCount)
        {
            return mainKey;

        }
        GetValue(keysList, i, keyCount, mainKey);
    }
    return mainKey;
}
private string GetValue(List keysList、int i、int keyCount、string main key)
{
List templast=keysList[i].Split(',).ToList();
foreach(模板列表中的字符串键)
{
主键+=主键;
i++;
if(i==keyCount)
{
返回主键;
}
GetValue(键列表、i、键计数、主键);
}
返回主键;
}

您可以按如下方式创建助手函数:

static IEnumerable<string> EnumerateKeys(string[][] parts)
{
    return EnumerateKeys(parts, string.Empty, 0);
}

static IEnumerable<string> EnumerateKeys(string[][] parts, string parent, int index)
{
    if (index == parts.Length - 1)
        for (int col = 0; col < parts[index].Length; col++)
            yield return parent + parts[index][col];
    else
        for (int col = 0; col < parts[index].Length; col++)
            foreach (string key in EnumerateKeys(parts, parent + parts[index][col], index + 1))
                yield return key;
}

在线演示:

这里有一种方法

string item = "a,b,c+1,2,3,4+z,x";

var lists = item.Split('+').Select(i => i.Split(',')).ToList();    
IEnumerable<string> keys = null;

foreach (var list in lists) 
{
    keys = (keys == null) ? 
        list : 
        keys.SelectMany(k => list.Select(l => k + l));
}
string item=“a,b,c+1,2,3,4+z,x”;
var list=item.Split('+')。选择(i=>i.Split(',')).ToList();
IEnumerable keys=null;
foreach(列表中的变量列表)
{
keys=(keys==null)?
名单:
keys.SelectMany(k=>list.Select(l=>k+l));
}

你好。这个解决方案对我来说非常有效。但我选择了小提琴的解决方案,因为这更容易解释。非常感谢你的回答。
string item = "a,b,c+1,2,3,4+z,x";

var lists = item.Split('+').Select(i => i.Split(',')).ToList();    
IEnumerable<string> keys = null;

foreach (var list in lists) 
{
    keys = (keys == null) ? 
        list : 
        keys.SelectMany(k => list.Select(l => k + l));
}