【发布时间】:2018-07-13 22:04:26
【问题描述】:
您好,我正在尝试将Nullable<Double> 属性列表转换为object[][] 属性,如下所示。
WeibullLinearRegression.LinearRegressionPoints = await context.WeibullLinearRegressionPoints.Where(x => x.WeibullFilterDetailsId == filterId).Select(x => new object[]
{ x.XCoordinate !=null? (double)x.XCoordinate : default(double),
x.YCoordinate != null ? (double)x.YCoordinate: default(double)
}
).ToArrayAsync(token);
我尝试了所有可能的组合,使用默认值等仍然会引发如下错误。不知道为什么会这样。
Unable to cast System.Double to System.Object. LINQ to Entities only supports casting EDM primitive or enumeration types.
非常感谢您的帮助!
更新
正如其他一些帖子建议尝试使用泛型数组一样,仍然没有用! :(
WeibullLinearRegression.LinearRegressionPoints = await context.WeibullLinearRegressionPoints.Where(x => x.WeibullFilterDetailsId == filterId).Select(x => **new []**
{ x.XCoordinate !=null? (double)x.XCoordinate : default(double),
x.YCoordinate != null ? (double)x.YCoordinate: default(double)
}
).ToArrayAsync(token);
【问题讨论】:
-
是否有任何特殊原因需要数据库来执行 Select 子句(因为它真的不能,这就是您看到错误的原因)?如果没有,只需将 Select 放在 ToArrayAsync 之后,然后再放一个 ToArray。然后 Select 将在内存中作为原生 C# 执行,而不是试图变成一些复杂的 SQL 查询。
-
就是这样!谢谢!