C#QueryExpression内部枚举器

时间:2016-09-26 10:36:25

标签: c# query-expressions

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

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

我不知道如何命名我想要的东西,所以我无法通过谷歌找到答案。如果你能给我一些暗示或者其他什么,我将非常感激。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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
}