1

以下代码显示此错误

对象必须实现 IConvertible

当我在 LINQ 表达式中添加 where 子句来比较DateTime字段时。

我尝试使用Convert.ToDateTime(c.ETC) >= startday但仍然是同样的错误。

var excel = new ExcelQueryFactory(excelfilename);
excel.AddMapping<BulkMovementItem>(x => x.ETC, "ETC");

var newrailtruckmovements = (from c in excel.Worksheet<BulkMovementItem>(sheetname)                  
    where c.ETC > new DateTime(2015, 7, 1) 
    select c);

的定义BulkMovementItem

public class BulkMovementItem
{
    public string  ScheduleName { get; set; }   
    public string  DealHeaderName { get; set; } 
    public string DealDetailName { get; set; }
    public string ETC { get; set; }
    public string RailcarName { get; set; } 
    public string Location   { get; set; }
    public string OriginLocation { get; set; }  
    public string FunctionType { get; set; } 
    public string ProductName { get; set; } 
    public string Volume { get; set; }  
    public string SupplierUniqueNbr { get; set; }

    // Error Description
    public string Status { get; set; }
    public bool HasErrors { get; set; }
    //public List<string> ErrorDetails { get; set; }
}
4

1 回答 1

1

您只需要将ETC' 类中的类型更改为DataTime. 图书馆将完成剩下的工作:

public class BulkMovementItem {
    // some fields...
    public DateTime ETC { get; set; }
    // rest of fields...
}

这会起作用:

var rows = from c in excel.Worksheet<BulkMovementItem>(sheetname)                  
           where c.ETC > new DateTime(2015, 7, 1) 
           select c;
于 2015-07-22T22:20:13.123 回答