我有一个字符串列表,如:
abcd@domain.com
efgh@domain.com
ijkl@domain.com;mnop@domain.com;qrst@domain.com
uvwx@domain.com
yz@domain.com
Run Code Online (Sandbox Code Playgroud)
我想要它:
abcd@domain.com
efgh@domain.com
ijkl@domain.com
mnop@domain.com
qrst@domain.com
uvwx@domain.com
yz@domain.com
Run Code Online (Sandbox Code Playgroud)
所以我编写了下面的代码,它按预期工作.
foreach (var email in emailAddressesOnRequest)
{
if (!string.IsNullOrEmpty(email) && email.Contains(';'))
{
emailAddressesOnRequest.AddRange(email.Split(';').ToList());
emailAddressesOnRequest.Remove(email);
}
}
Run Code Online (Sandbox Code Playgroud)
LINQ ForEach有什么方法可以简单地使用它吗?
您正在寻找的是遍历集合并为每个项目返回不同类型的项目.为此用途Select.
因为在您的情况下,您可能希望从每个项目返回一个项目集合,并且不希望在嵌套集合中使用它们SelectMany对Split(';')方法的结果使用.
List<string> values = new List<string>
{
"abcd@domain.com",
"efgh@domain.com",
null,
"ijkl@domain.com; mnop @domain.com; qrst @domain.com",
"uvwx@domain.com",
"yz@domain.com"
};
var result = values.Where(value => !string.IsNullOrWhiteSpace(value))
.SelectMany(value => value.Split(';')).ToList();
Run Code Online (Sandbox Code Playgroud)
在查询语法中:
var result = (from value in values
where !string.IsNullOrWhiteSpace(value)
from email in value.Split(';')
select email).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |