我有这个LINQ查询:
double[] _x = CV.trainingDataTable.AsEnumerable()
.Where(x => x.Field<int>("rk") == i)
.Select(x => x.Field<double>("years"))
.ToArray();
我的问题是我不确定“rk”和“years”列中值的数据类型是什么,它引发了一个异常。 想知道如何重新编写此查询以更灵活 非常感谢。
答案 0 :(得分:1)
你说灵活但我说会更容易出错。 Field
-extension method是类型安全的。它将使您能够使用正确的类型,而不是摆弄System.Object
(DataRow
实际存储)。但你必须知道它是什么类型。
由于上述原因,我不会告诉你如何规避它(例如,使用ToString
然后解析为你想要的类型)。你应该知道它是什么类型。
您可以通过表格Columns
检测types of the DataColumn
:
Type theTypeOfTheColumnRK = CV.trainingDataTable.Columns["rk"].DataType;
Type theTypeOfTheColumnYears = CV.trainingDataTable.Columns["years"].DataType;
您可以在调试器中执行这些语句以确定类型。