1

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

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 个项目的数组。

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

4

2 回答 2

2

您很可能正在寻找 LINQSelectMany方法:

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

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

于 2016-09-26T10:42:20.027 回答
1

首先,您要用于SelectMany返回单个扁平列表:

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

然后你想用它Distinct来过滤掉重复项

.Distinct()

然后您将能够枚举所有这些:

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

foreach (var email in emails) {
    // do stuff here
}
于 2016-09-26T10:46:59.713 回答