我有一個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文件是完美的,但如果有一百萬行會發生什麼?我想知道如何使這更優雅或優化它有什麼建議。