小编Ben*_*lla的帖子

使用 LINQ 根据字符串将包含的已知子字符串对字符串列表进行分组

我有一个已知的字符串列表,如下所示:

List<string> groupNames = new List<string>(){"Group1","Group2","Group3"};
Run Code Online (Sandbox Code Playgroud)

我还有一个事先未知的字符串列表,如下所示:

List<string> dataList = new List<string>()
{
   "Group1.SomeOtherText",
   "Group1.SomeOtherText2",
   "Group3.MoreText",
   "Group2.EvenMoreText"
};
Run Code Online (Sandbox Code Playgroud)

我想做一个 LINQ 语句,它将获取 dataList 并将其转换为匿名对象或字典,该对象具有组名称的键和包含该组中字符串列表的值。目的是循环组和内部循环组列表,并根据字符串所在的组对字符串执行不同的操作。

我想要一个看起来像这样的数据结构:

var grouped = new
{
   new
   {
       Key="Group1",
       DataList=new List<string>()
            {
               "Group1.SomeOtherText",
               "Group1.SomeOtherText2"
            }
    },
    new 
    {
       Key="Group2",
       DataList=new List<string>()
            {
               "Group2.EvenMoreText"
            }
    }
    ...
};
Run Code Online (Sandbox Code Playgroud)

我知道我可以循环遍历 dataList,然后检查每个字符串是否包含组名称,然后将它们添加到单独的列表中,但我正在尝试学习执行此类任务的 LINQ 方式。

提前致谢。

编辑:

只是有另一个想法...如果我的组名在枚举中怎么办?

public enum Groups
{
    Group1,
    Group2,
    Group3
}
Run Code Online (Sandbox Code Playgroud)

我如何将其放入字典>?

这就是我正在尝试的,但我不确定如何形成 ToDictionary 部分

Dictionary<Groups,List<string>> groupedDictionary =   (from groupName in Enum.GetNames(typeof(Groups))
                                                      from data in dataList …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by

2
推荐指数
1
解决办法
7140
查看次数

标签 统计

c# ×1

group-by ×1

linq ×1