我有一个csv文件,有2列,ID
和Flag
。有很多Flag
值,但有一些表示错误的东西 - 错误,失败等。我需要做的是相当简单 - 搜索Flag
列,看看这些值中的任何一个是否在“Bad Flags”组中。在csv文件的列中搜索值
我有以下代码,做我所需要的 - 检查标志文件是否存在,遍历每行,将其拆分,然后检查当前行是否有标志元素,然后检查标志是否在我的坏组 - 如果我发现连一个我做:
private bool CheckFlagStatus(string directory)
{
// Bad flags
const int Flag1 = 1;
const int Flag2 = 5;
const int Flag3 = 6;
const int Flag4 = 42;
const int Flag5 = 61;
bool isGood = true;
string flagFilePath= Path.Combine(directory, "flags.csv");
if (File.Exists(flagFilePath))
{
using (StreamReader reader = new StreamReader(flagFilePath))
{
string line;
while (!string.IsNullOrEmpty(line = reader.ReadLine()))
{
var splitval = line.Split(',');
if (splitval.Length == 2)
{
var flagString = splitval[1];
int flag;
bool parsed = Int32.TryParse(flagString, out flag);
if (parsed)
{
if (flag == Flag1 || flag == Flag2 || flag == Flag3
|| flag == Flag4 || flag == Flag5)
{
isGood = false;
break;
}
}
}
}
}
}
return isGood;
}
虽然这个作品,这是一个非常线性的强力方法。虽然有20行的flags.csv文件是完美的,但如果有一百万行会发生什么?我想知道如何使这更优雅或优化它有什么建议。