我有一个像这样的字符串列表。
MainItem.Item1.AssetID_0
MainItem.Item1.AssetID_1
MainItem.Item1.AssetID_2
MainItem.Item1.AssetID_3
MainItem.Item1.AssetID_4
MainItem.Item1.AssetID_5
MainItem.Item2.AssetID_1
MainItem.Item2.AssetID_2
MainItem.Item2.AssetID_3
MainItem.Item2.AssetID_4
MainItem.Item2.AssetID_5
我希望根据Distinct" MainItem.Item"从此列表中选择两个单独的List。 所以答案将是
MainItem.Item1.AssetID_0
MainItem.Item1.AssetID_1
MainItem.Item1.AssetID_2
MainItem.Item1.AssetID_3
MainItem.Item1.AssetID_4
MainItem.Item1.AssetID_5
和
MainItem.Item2.AssetID_1
MainItem.Item2.AssetID_2
MainItem.Item2.AssetID_3
MainItem.Item2.AssetID_4
MainItem.Item2.AssetID_5
这是我到目前为止所尝试的。但它没有返回所需的输出
var resultsLists = mainList.Select(GetPathFromKey).Distinct();
public static string[] Splitkey(string keyFromReading)
{
return keyFromReading.Split('.');
}
public static string GetPathFromKey(string keyFromReading)
{
string[] splittedStrings = Splitkey(keyFromReading);
return String.Join(".", splittedStrings[0], splittedStrings[1]);
}
答案 0 :(得分:1)
你可以使用....
List<List<string>> allLists = strings
.Select(str => new { str, token=str.Split('.') })
.Where(x => x.token.Length >= 2)
.GroupBy(x => string.Concat(x.token.Take(2)))
.Select(g => g.Select(x => x.str).ToList())
.ToList();
此列表包含两个List<string>
。第一行包含6行Item1,第二行包含5行Item2。