Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于部分匹配从单个列表中获取两个列表_C#_List - Fatal编程技术网

C# 基于部分匹配从单个列表中获取两个列表

C# 基于部分匹配从单个列表中获取两个列表,c#,list,C#,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.Ite

我有一张这样的字符串列表

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
我想从这个列表中得到两个独立的列表,基于不同的“MainItem.Item”。 所以答案是

MainItem.Item1.AssetID_0
MainItem.Item1.AssetID_1
MainItem.Item1.AssetID_2
MainItem.Item1.AssetID_3
MainItem.Item1.AssetID_4
MainItem.Item1.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]);
}
你可以用

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 allLists=字符串
.Select(str=>new{str,token=str.Split('.')})
.其中(x=>x.token.Length>=2)
.GroupBy(x=>string.Concat(x.token.Take(2)))
.Select(g=>g.Select(x=>x.str).ToList())
.ToList();

此列表包含两个
list
。第一个列表包含6行Item1,第二个列表包含5行Item2。

到目前为止您尝试过什么吗?这看起来像是regex的工作-你知道吗?我已经更新了我的问题并添加了试用代码。你可能还想放置你现在得到的输出。谢谢Tim,你的代码正符合我的要求。
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();