使用Linq来汇总数据(双重类型)错误。对象必须是Int32类型

时间:2012-07-18 04:35:41

标签: linq

我想总结一组双精度型值,但我得到一个运行时异常,如:Object必须是行上的Int32类型:resultSet.Sum(d => ; d.Data)。

for (int i = 1; i <= 7; ++i) {
    double sum = 0;
    DateTime timeSpot1 = fromDate.AddDays(i - 1);
    DateTime timeSpot2 = fromDate.AddDays(i);

    var resultSet = distributionDatePoint
                       .Where(d = > 
                                   d.Datetime.Day.CompareTo(timeSpot1) > 0 
                                && d.Datetime.Day.CompareTo(timeSpot2) < 0);
    if (resultSet != null) {
        sum = resultSet.Sum(d = > d.Data);
    }

    if (sum > 0) {
        chartData += sum.ToString("0.00");
    }
    else {
        chartData += "0,";
    }
}​

d.Data是双重类型。我试图以这种方式使用Sum()

resultSet.Sum<Double>(d => d.Data);

但错误仍然存​​在。

任何人都可以帮我这个吗?因为我被困了30分钟......

帮助~~~~

1 个答案:

答案 0 :(得分:0)

您的问题在这里

var resultSet = distributionDatePoint 
                       .Where(d = >  
                                   d.Datetime.Day.CompareTo(timeSpot1) > 0  
                                && d.Datetime.Day.CompareTo(timeSpot2) < 0);

您正在将Int32与DateTime对象进行比较。

您需要执行类似

的操作
var resultSet = distributionDatePoint 
                       .Where(d = >  
                                   d.Datetime.Day.CompareTo(timeSpot1.Day) > 0  
                                && d.Datetime.Day.CompareTo(timeSpot2.Day) < 0);