使用 C# 中的特定提供程序将值转换为双精度

Convert value to double with specific provider in C#

我需要解析 CSV 文件、获取特定列并将值转换为双精度值。如果所有值都可以转换为双精度,我下面的代码可以正常工作:)。但是,如果值等于“TRUE”/“FALSE”,我应该如何更新代码?

代码:

dt = GetDataTableFromCsv("my_csv.csv");
// Gets the column of the dependent/indepent variable
// I need structure double [][]
var input = dt.AsEnumerable().Select(r => independentNames.Where(i => dt.Columns.Contains(i)).Select(c => Convert.ToDouble(r.Field<object>(c), provider(???))).ToArray()).ToArray();

CSV 示例:

Rank, Value, TV, IS_NEW, IS_HOME, RATINGS, ...

"1", "0.5", "CNN", "TRUE", "FALSE", "888.77" ....

如果您需要做的只是将 "TRUE""FALSE" 包装到 1.00.0,请将逻辑分离到您自己的方法中并调用它而不是 Convert.ToDouble

您仍然需要在此方法或更高范围内处理无效输入。

double AsDouble(string input)
{
    switch (input)
    {
        case "TRUE": return 1.0;
        case "FALSE": return 0.0;

        //any other special cases

        default: return Convert.ToDouble(input); //may still throw!
    }
}