Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq Foreach将字符串拆分为数组并填充到列表中的实现_Linq - Fatal编程技术网

Linq Foreach将字符串拆分为数组并填充到列表中的实现

Linq Foreach将字符串拆分为数组并填充到列表中的实现,linq,Linq,我有一系列电子邮件地址,如: 字符串str=abc@gmail.com;温室气体ghf@gmail.com >;xyz 现在我想做点像这样的事 List<string> test = new List<string>(); Regex.Split(to, ";").ToList().ForEach(x => x.Split(new char[] { '<', '>' }).Select(y => y != "<" || y !

我有一系列电子邮件地址,如:

字符串str=abc@gmail.com;温室气体ghf@gmail.com >;xyz

现在我想做点像这样的事

List<string> test = new List<string>();
        Regex.Split(to, ";").ToList().ForEach(x => x.Split(new char[] { '<', '>' }).Select(y => y != "<" || y != ">"));
List test=newlist();
Regex.Split(to,“;”).ToList().ForEach(x=>x.Split(newchar[]{“”)。选择(y=>y!=”);

现在,我如何只填写电子邮件地址,如abc@gmail.com , ghf@gmail.com及xyz@gmail.com进入单linq查询中的列表测试?

您是否尝试了以下操作:

var test = Regex.Split(to, ";").ToList().ForEach(x => x.Split(new char[] { '<', '>' }).Select(y => y != "<" || y != ">"));
var test=Regex.Split(to,“;”).ToList().ForEach(x=>x.Split(new char[]{'')。选择(y=>y!=”);
var result=str.Split(“;”)
.Select(m=>Regex.Replace(m),([^,“$2”)
.Trim()).ToList();

您的代码示例实际上不会做任何有用的事情-它会创建一个列表并调用
Select
,但这不会影响
test
…尝试摆脱使用
ToList()的习惯。ForEach(…)
,这是一个被严重滥用的构造,没有任何真正的好处。只需使用一个
foreach
循环。@Jonsket是的,我知道你的两个部分。实际上我试图摆脱foreach,但不知道怎么做。Jon我怎么知道那代码真的没有任何作用。我实际上不知道怎么做,所以我尽了最大的努力到目前为止:)@Raphal你能告诉我这个正则表达式是如何工作的吗?我对正则表达式不太熟悉一点解释wd b就足够了:)我得到的结果怎么都还没有达到标准,但是如果我能理解你的正则表达式的功能,我可以根据我的需要修改你的代码:)。但是它非常接近我实际想要的结果:)@Joy 1。(char
之前的所有内容。用第二个表达式的内容(char
之前的所有内容)替换所有内容。然后修剪以删除空格。希望它(稍微)更清晰。@Joy和我使用给定的示例进行了测试,得到了很好的结果。您可以给出一个“非工作示例”,可能吧。我给字符串str=Qa5;Qa5;abc@gmail.com这给了我结果=qa5@gmail.comqa5@gmail.com,abc@gmail.com@Joy对你的字符串进行了很好的测试,我得到了3个元素的列表qa5@gmail.com,qa5@gmail.com,abc@gmail.com…这不是你想要的吗?
var result = str.Split(';')
              .Select(m => Regex.Replace(m, "([^<]+)<([^>]+)>", "$2")
              .Trim()).ToList();