Datatable LINQ查询抛出datetime列的异常

时间:2015-03-21 10:54:43

标签: c# linq datatable

for (DateTime date = fromDate; date <= toDate; date = date.AddDays(1))
{
   var bwSalesValue = (from r in dtSalesData.AsEnumerable()
                       where r.Field<int>("PositionId") == pdPositionId 
                       && r.Field<DateTime>("SaleDate") == date
                       select r.Field<int>("SaleValue")).FirstOrDefault();


}

从上面的代码段r.Field<DateTime>("SaleDate") == date部分引发异常指定演员无效

日期变量和dtSalesData行具有相同的值3/1/2015 12:00:00 AM

有任何线索吗?

UPDATE ==================================

对不起朋友,我在这里犯了一个愚蠢的错误。问题出在下一行 -

select r.Field<int>("SaleValue")).FirstOrDefault(); //Would be <decimal>

请接受我的道歉。谢谢大家。

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

var bwSalesValue = (from r in dtSalesData.AsEnumerable()
                   where r.Field<int>("PositionId") == pdPositionId 
                   && Convert.ToDateTime(r.SaleDate) == date
                   select r.Field<int>("SaleValue")).FirstOrDefault();

答案 1 :(得分:0)

for (DateTime date = fromDate; date <= toDate; date = date.AddDays(1))
{
   var bwSalesValue = (from r in dtSalesData.AsEnumerable()
                       where r.Field<int>("PositionId") == pdPositionId 
                       && r.Field<DateTime>("SaleDate") == DBNull.Value ? DateTime.MinValue : date);
                       select r.Field<int>("SaleValue")).FirstOrDefault();


}

当SaleDate返回DBNull.Value时,也许你不应该使用where子句,因为它无法将DateTime转换为null。