我想在csv文件上找到一个日期,我希望将此行作为电子邮件发送
adam smit;1.12.2014
我正在使用此代码,但身体总是空的我想知道是什么原因造成的?
谢谢你的帮助
System.IO.StreamReader file = new System.IO.StreamReader(@"c:\test.csv");
while ((line = file.ReadLine()) != null)
{
int i = 0;
string[] words = line.Split(";"[0]);
if (words[i] == DateTime.Now.ToString("dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture))
{
mail.Body = line;
}
i++;
counter++;
}
答案 0 :(得分:1)
你的变量i
始终为0.你应该将你的行追加到mail.body
而不是覆盖整个身体。
试试这个:
var file = new System.IO.StreamReader(@"c:\test.csv");
while ((line = file.ReadLine()) != null)
{
string[] words = line.Split(';');
DateTime dt;
if(DateTime.TryParse(words[1], new CultureInfo("de-DE"), DateTimeStyles.None, out dt)
&& dt.Date == DateTime.Today)
{
mail.Body += line + Environment.NewLine;
}
}
答案 1 :(得分:0)
变量声明[i]应该在控制循环之前,而不是在它内部。
答案 2 :(得分:-1)
单词[i]总是给你0项,因为你没有在里面做任何循环。所以代替:
if (words[i] == DateTime.Now.ToString("dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture))
{
使用
if (words[1] == DateTime.Now.ToString("dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture))
{
你不需要i变量和i ++增量