我正在导入一个csv文件,其中有10列。其中有布尔列,可以是(1 , true ,false, 0)
。
我正在阅读csv文件并创建一个数据表,除了布尔值字段之外一切正常,它总是返回false。
下面的代码,用于从csv。
创建数据表public static DataTable GetDataTable(bool firstRowColumnName, string path)
{
StreamReader sr = new StreamReader(path);
string line = null;
DataTable dtResult = new DataTable();
if (firstRowColumnName)
{
line = sr.ReadLine();
string[] headers = line.Split(',');
for (int i = 0; i < headers.Length; i++)
{
dtResult.Columns.Add(headers[i]);
}
}
while ((line = sr.ReadLine()) != null)
{
if (line.Trim() != string.Empty)
{
string[] lineData = line.Split(',');
if (dtResult.Columns.Count == 0)
{
for (int i = 0; i < lineData.Length; i++)
{
dtResult.Columns.Add("Column" + i.ToString());
}
}
DataRow drNew = dtResult.NewRow();
for (int i = 0; i < lineData.Length; i++)
{
drNew[i] = lineData[i];
}
dtResult.Rows.Add(drNew);
}
}
return dtResult;
}
下面是我正在阅读数据表的代码。
machine is an object of a class.
machine.IsLaptop = dt.Rows[i]["Laptop"].ToString() == "1" || dt.Rows[i]["Laptop"].ToString().ToLower() == "true";
请建议为什么价值总是假的。
答案 0 :(得分:2)
由于您正在使用字符串值,因此读取的值可能是“true”,包括空格。
答案 1 :(得分:0)
尝试使用Convert.ToBoolean
和/或Convert.ToInt32
来翻译您的值。
http://msdn.microsoft.com/en-us/library/system.convert.toboolean%28v=vs.110%29.aspx
您可能需要一些逻辑来处理未获得Boolean.TrueString或Boolean.FalseString的情况。在这种情况下,您可以Boolean.TryParse