📜  将字符串集合拆分为组的 C# 程序(1)

📅  最后修改于: 2023-12-03 14:53:50.057000             🧑  作者: Mango

将字符串集合拆分为组的 C# 程序

有时候需要将一个字符串集合按照一定的规则拆分成多个组,这时候我们可以使用 C# 语言提供的 Linq 查询语法或者 foreach 循环实现。

1. 使用 Linq 查询语法

使用 Linq 查询语法将字符串集合拆分为组,可以使用 GroupBy 方法,该方法会根据指定的键将集合分组并返回一个集合。

1.1 C# 代码
using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        List<string> names = new List<string>() { "Albert", "Bob", "Cathy", "David", "Edward", "Frank", "Gary", "Henry", "Ivan", "Jack" };
        
        var groups = names
                    .Where(name => name.Length > 4)
                    .GroupBy(name => name[0])
                    .OrderBy(group => group.Key);
        
        foreach(var group in groups)
        {
            Console.WriteLine("Group " + group.Key);
            foreach(string name in group)
            {
                Console.WriteLine("    " + name);
            }
        }

        Console.ReadKey();
    }
}
1.2 返回结果
Group A
    Albert
Group C
    Cathy
Group D
    David
Group E
    Edward
Group F
    Frank
Group G
    Gary
Group H
    Henry
Group I
    Ivan
Group J
    Jack
1.3 代码说明
  • 构建字符串集合:我们使用 List 类型来存储字符串集合。
  • Linq 查询:使用 Linq 查询语法对字符串集合进行查询。
    • Where 方法:筛选出名称长度大于 4 的字符串。
    • GroupBy 方法:按照字符串首字母分组。
    • OrderBy 方法:按照组名排序。
  • 循环遍历:遍历分组结果并输出。
2. 使用 foreach 循环

除了 Linq 查询语法,我们也可以使用 foreach 循环将字符串集合拆分为组。这种方式相对于 Linq 查询语法需要手动定义一个 Dictionary 来存储分组结果。下面是具体实现。

2.1 C# 代码
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        List<string> names = new List<string>() { "Albert", "Bob", "Cathy", "David", "Edward", "Frank", "Gary", "Henry", "Ivan", "Jack" };
        
        Dictionary<char, List<string>> groups = new Dictionary<char, List<string>>();
        
        foreach(string name in names)
        {
            if (name.Length > 4)
            {
                char key = name[0];
                if (!groups.ContainsKey(key))
                {
                    groups.Add(key, new List<string>());
                }
                
                groups[key].Add(name);
            }
        }
        
        foreach(KeyValuePair<char, List<string>> group in groups)
        {
            Console.WriteLine("Group " + group.Key);
            foreach(string name in group.Value)
            {
                Console.WriteLine("    " + name);
            }
        }

        Console.ReadKey();
    }
}
2.2 返回结果
Group A
    Albert
Group C
    Cathy
Group D
    David
Group E
    Edward
Group F
    Frank
Group G
    Gary
Group H
    Henry
Group I
    Ivan
Group J
    Jack
2.3 代码说明
  • 构建字符串集合:我们使用 List 类型来存储字符串集合。
  • 定义 Dictionary:手动定义一个 Dictionary 来存储分组结果。
  • 循环遍历:遍历字符串集合,如果名称长度大于 4,就将字符串加入到对应的组中。
  • 输出结果:遍历分组结果并输出。
3. 总结

以上是 C# 中将字符串集合拆分为组的两种实现方法,使用 Linq 查询语法可以简化代码并提高效率,使用 foreach 循环则需要手动定义一个 Dictionary 来存储分组结果,但是更加灵活。根据需求选择不同的实现方法即可。