基于C#

时间:2016-02-25 09:37:30

标签: c# linq

问题 - 我的文件(info.ref)包含特定格式的信息(参考ID |电子邮件地址),例如:

ref1|a@a.com,b@b.com,c@c.com   
ref2|c@c.com,d@d.com

我还从另一个文件中获取引用ID(比如ref1)。我需要遍历这个文件,然后想要发送电子邮件到与这个引用ID相关的所有电子邮件ID。

我尝试了什么 -

 using (var streamReader = new StreamReader("info.ref"))
                            {
                                string line1="";
                                while((line1 = streamReader.ReadLine()) != null)
                                {
                                    var parameters =
                                       from line11 in line1
                                       let split = line1.Split('|')
                                       select new { name = split.First(), value = split.Skip(1) };

                                   //email logic to be written


                                }

问题 - 如何从此“参数”中获取电子邮件列表。

注意 - 我知道我可以用“|”拆分字符串作为分隔符并再次以“,”作为分隔符和存储在数组中。但有人可以指导我编写的代码有什么问题以及如何检索电子邮件地址?哪种更好的方法?。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您还没有用逗号分割电子邮件,并且您不需要循环中的LINQ查询:

string[] tokens = line1.Split('|');
if(tokens.Length >= 2)
{
    string name = tokens[0];
    string[] emails = tokens[1].Split(',');
}

如果您正在学习LINQ,可以使用File.ReadLines并执行以下查询:

var allInfos = from line in System.IO.File.ReadLines("info.ref")
               let tokens = line.Split('|')
               where tokens.Length >=  2
               select new { name = tokens[0], emails = tokens[1].Split(',') };

foreach(var info in allInfos)
    Console.WriteLine("Name:{0} Emails{1}", info.name, String.Join(",", info.emails));

答案 1 :(得分:0)

你也可以拆分多个分隔符(假设ref cannont包含6 char)):

$query_check= "select distinct(project_code) from table1";
$projects_check = mysql_query($query_check);

while ($result_check = mysql_fetch_array($projects_check)){
    $all[] = $result_check[0];  
}

$query = "select id from table2";
$projects = mysql_query($query);
while ($result = mysql_fetch_array($projects)){
    foreach($all as $all_val){
        $pro_code = $result[0];
        if($pro_code != $all_val){ }
    }
}

或:

,