csv import中的布尔值总是为false

时间:2014-06-23 16:46:09

标签: c# csv

我正在导入一个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";

请建议为什么价值总是假的。

2 个答案:

答案 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.TrueStringBoolean.FalseString的情况。在这种情况下,您可以Boolean.TryParse