我在
下面有一个数组string stringArray = new stringArray[12];
stringArray[0] = "0,1";
stringArray[1] = "1,3";
stringArray[2] = "1,4";
stringArray[3] = "2,1";
stringArray[4] = "2,4";
stringArray[5] = "3,7";
stringArray[6] = "4,3";
stringArray[7] = "4,2";
stringArray[8] = "4,8";
stringArray[9] = "5,5";
stringArray[10] = "5,6";
stringArray[11] = "6,2";
我需要转换如下
List<List<string>> listStringArray = new List<List<string>>();
listStringArray[["1"],["3","4"],["1","4"],["7"],["3","2","8"],["5","6"],["2"]];
怎么可能?
答案 0 :(得分:10)
我认为你真正想要的可能就是:
var indexGroups = x.Select(s => s.Split(',')).GroupBy(s => s[0], s => s[1]);
这会将元素作为分组枚举返回。
要返回列表清单,这是您真正要求的清单,请尝试:
var lists = x.Select(s => s.Split(',')).GroupBy(s => s[0], s => s[1])
.Select(g => g.ToList()).ToList();
答案 1 :(得分:0)
没有这样的简写。你必须进入循环并拆分每个数组并添加到列表中。
答案 2 :(得分:0)
非LINQ版本(我必须承认它更加丑陋,但你可能别无选择)
var index = new Dictionary<string, List<string>>();
foreach (var str in stringArray) {
string[] split = str.Split(',');
List<string> items;
if (!index.TryGetValue(split[0], out items)) {
items = new List<string>();
index[split[0]] = items;
}
items.Add(split[1]);
}
var transformed = new List<List<string>>();
foreach (List<string> list in index.Values) {
transformed.Add(list);
}