List<List<string>> proplist = new List<List<string>>();
List<string> l0 = proplist[0];
List<string> l1 = proplist[1];
List<string> l2 = proplist[2];
var list = from s1 in l0
from s2 in l1
from s3 in l2
select s1 + s2 + s3;
我现在是这么写的,但是有个问题,就是proplist不是固定3个,有的时候只有2个,所以会报错
以下代码测试通过:
List<List<string>> proplist = new List<List<string>>(); proplist.Add(new List<string>(){"a","b"}); proplist.Add(new List<string>() { "c", "d" }); Console.WriteLine(string.Join("", proplist.Select(x => string.Join("", x))));
你这个不对啊,我的意思是这样的
List<List<string>> proplist = new List<List<string>>();
proplist.Add(new List<string>(){"a","b"});
proplist.Add(new List<string>() { "c", "d" });
然后循环结果是
ac
ad
bc
bd
这样
@墙头草:
这个操作在英文中叫pairwise,提供一个思路:将List<List<string>>转换成List<string>,也就是new List<string>(){"a","b", "c", "d"},然后使用MoreLINQ的Pairwise()方法。
@dudu: 这个...如果我有{"a","b","c"} {"b", "c", "d" }
也能做到吗,有没有详细的例子啊
mark一下。。。
List<List<string>> proplist = new List<List<string>>();
proplist.Add(new List<string>(){"a","b"});
proplist.Add(new List<string>() { "c", "d" });
var pinyinList = proplist .Aggregate((cur, next) => {
List<string> val = new List<string>();
foreach (var item in cur)
{
foreach (var item2 in next)
{
val.Add(item + item2);
}
}
foreach (var item in pinyinList)
{
Debug.Log(item);
}