2015-07-21 104 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; 
相關問題