c# QueryExpression内部枚举器

本文关键字:枚举 内部 QueryExpression | 更新日期: 2023-09-27 18:08:44

我有一个包含电子邮件的字符串数组,以逗号分隔。例子:

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个元素的数组。

我不知道如何命名我想要的,所以我无法通过谷歌找到答案。如果你能给我一点提示什么的,我将非常感激。

c# QueryExpression内部枚举器

您最有可能寻找LINQ SelectMany方法:

var enum = array
           .SelectMany(item => item.Split(';'))
           .Distinct()
           .ToArray(); 

这将返回一个包含唯一电子邮件的字符串数组。

首先,您希望使用SelectMany返回单个扁平列表:

array.SelectMany(item => item.Split(';'))

然后你想用Distinct过滤掉重复的

.Distinct()

然后你就可以枚举它们了:

var emails = array.SelectMany(item => item.Split(';')).Distinct();
foreach (var email in emails) {
    // do stuff here
}