📅  最后修改于: 2023-12-03 14:53:50.057000             🧑  作者: Mango
有时候需要将一个字符串集合按照一定的规则拆分成多个组,这时候我们可以使用 C# 语言提供的 Linq 查询语法或者 foreach 循环实现。
使用 Linq 查询语法将字符串集合拆分为组,可以使用 GroupBy 方法,该方法会根据指定的键将集合分组并返回一个集合。
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();
}
}
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
除了 Linq 查询语法,我们也可以使用 foreach 循环将字符串集合拆分为组。这种方式相对于 Linq 查询语法需要手动定义一个 Dictionary 来存储分组结果。下面是具体实现。
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();
}
}
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
以上是 C# 中将字符串集合拆分为组的两种实现方法,使用 Linq 查询语法可以简化代码并提高效率,使用 foreach 循环则需要手动定义一个 Dictionary 来存储分组结果,但是更加灵活。根据需求选择不同的实现方法即可。