此代码可以正常工作:
string[] lineOfContents = File.ReadAllLines(@"C:\users.csv");
foreach (var line in lineOfContents)
{
string[] tokens = line.Split(',');
if (tokens[2] == "ed@yahoo.com")
{
MessageBox.Show("Email already exists");
}
else
{
MessageBox.Show("Ok");
}
}
以上代码的工作原理如下:
所以,我想用简单的代码对CSV文件中的“电子邮件”记录进行“直接访问”,如下所示:
答案 0 :(得分:4)
string fileContents = File.ReadAllText("c:\\users.csv");
if (fileContents.Contains("ed@yahoo.com")) {
MessageBox.Show("Email already exists");
} else {
MessageBox.Show("Ok");
}
答案 1 :(得分:1)
一种方法可以是:
string[] lineOfContents = File.ReadAllLines(@"C:\users.csv");
string email="ed@yahoo.com";
if (lineOfContents.Contains(email))
{
MessageBox.Show("Email already exists");
}
else
{
MessageBox.Show("Ok");
}
使用linq
的其他方式可以是:
string[] lineOfContents = File.ReadAllLines(@"C:\users.csv");
string email="ed@yahoo.com";
if(lineOfContents.Any(e->e.Contains(email))){...}
还有一个:
string temp = "";
if(String.Join(temp,lineOfContents).Contains(email);
另一个或最佳可以是:
if (Array.IndexOf(lineOfContents, email) >= 0)
{
//Your stuff goes here
}
我很害怕,你问的是什么(“..是否有可能避免阅读所有文件内容,我更愿意直接去”电子邮件“”)不可能开箱即用。但是有一些很好的实用工具可以帮助你更有效地工作(但我怀疑他们不会解析文件)。
一些好的是:
Microsoft的另一个好消息是TextFieldParser Class。
TextFieldParser
对象提供了解析结构化文本文件的方法和属性。使用TextFieldParser
解析文本文件类似于迭代文本文件,而提取文本字段的ReadFields
方法类似于拆分字符串。
TextFieldParser可以解析两种类型的文件:分隔或固定宽度。某些属性(如Delimiters和HasFieldsEnclosedInQuotes)仅在使用分隔文件时才有意义,而FieldWidths属性仅在使用固定宽度文件时才有意义。