C# QueryExpression 内部枚举器
C# QueryExpression inner enumerator
我有一个包含电子邮件的字符串数组,以逗号分隔。示例:
string[] array = new [] {
"test@test.com;test2@test.com",
"stack@test.com;test@test.com"
}
我想要一个查询表达式,它允许我枚举所有三个电子邮件地址(test@test.com 是重复的):"test@test.com, test2@test.com, stack@test.com"
我的基本尝试如下
var enum = array.Select((item) => item.Split(';'));
结果(当然)是一个包含 2 个项目的枚举器,每个项目包含一个包含 2 个项目的数组。
我不知道如何命名我想要的东西,所以我无法通过 google 找到答案。如果您能给我提示或其他信息,我将不胜感激。
您很可能正在寻找 LINQ SelectMany
方法:
var enum = array
.SelectMany(item => item.Split(';'))
.Distinct()
.ToArray();
这将 return 一个包含唯一电子邮件的字符串数组。
首先,您想使用 SelectMany
到 return 一个扁平化的列表:
array.SelectMany(item => item.Split(';'))
那你想用Distinct
过滤掉重复的
.Distinct()
然后你就可以把它们全部枚举出来了:
var emails = array.SelectMany(item => item.Split(';')).Distinct();
foreach (var email in emails) {
// do stuff here
}
我有一个包含电子邮件的字符串数组,以逗号分隔。示例:
string[] array = new [] {
"test@test.com;test2@test.com",
"stack@test.com;test@test.com"
}
我想要一个查询表达式,它允许我枚举所有三个电子邮件地址(test@test.com 是重复的):"test@test.com, test2@test.com, stack@test.com"
我的基本尝试如下
var enum = array.Select((item) => item.Split(';'));
结果(当然)是一个包含 2 个项目的枚举器,每个项目包含一个包含 2 个项目的数组。
我不知道如何命名我想要的东西,所以我无法通过 google 找到答案。如果您能给我提示或其他信息,我将不胜感激。
您很可能正在寻找 LINQ SelectMany
方法:
var enum = array
.SelectMany(item => item.Split(';'))
.Distinct()
.ToArray();
这将 return 一个包含唯一电子邮件的字符串数组。
首先,您想使用 SelectMany
到 return 一个扁平化的列表:
array.SelectMany(item => item.Split(';'))
那你想用Distinct
过滤掉重复的
.Distinct()
然后你就可以把它们全部枚举出来了:
var emails = array.SelectMany(item => item.Split(';')).Distinct();
foreach (var email in emails) {
// do stuff here
}