2015-07-21 74 views
1

下面的代码表明该错误的LINQ到Excel - 对象必须实现IConvertible错误

对象必须实现IConvertible

当我加入where子句中的LINQ表达比较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; } 
} 
+1

什么是'ETC'的类型? –

+1

发布BulkMovementItem定义会有所帮助。 – Jacob

+0

我想这是[LinqToExcel](https://github.com/paulyoder/LinqToExcel)库?如果你在你的问题中包含这些信息会很有帮助。 –

回答

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; 
相关问题