LinqToExcel – 导致Object的InvalidCastException必须实现Iconvertible错误

我正在使用下面的代码来查询LinqToExcel中的Excel文件:

var excelFile = new LinqToExcel.ExcelQueryFactory(@"\"+txtFileName.Text.Replace(@"\\",@"\")); var properties = from p in excelFile.Worksheet<Property>() where AssessmentID != null select p; foreach (var autoP in properties) doSomething(); 

当我查看运行时debugging器时,在查看属性variables的“结果视图”时,发现“InvalidCastException”。 所以,我假设我的class级定义有一些奇怪的现象。 我还假设我不需要将所有类的成员映射到excel文件,而只是我认为合适的那些。
所以,这也是类定义:

 public class Property { [DataMember] public int? Year { get; set; } [DataMember] public string ChangeReason { get; set; } [DataMember] public string AssessmentID { get; set; } [DataMember] public string CallBackNotes { get; set; } [DataMember] public string InspectionNotes { get; set; } [DataMember] public string Notes { get; set; } [DataMember] public bool Authorization { get; set; } [DataMember] public string ChargeStatus { get; set; } [DataMember] public string LegalLandDesc { get; set; } [DataMember] public string Address { get; set; } } 

下面是GitHub上LinqToExcel源代码的链接: LinqToExcelgenerics比我见过的更复杂,并且是我(显然)需要刷新的东西。

有什么明显的,我错过了会导致这个问题? 任何想法在哪里看,或如何解决这些错误?

查询的where子句是导致错误的原因。 它引用了在上下文中不适用的null关键字。 我把它改成:

 where !String.IsNullOrEmpty(p.AssessmentID) 

这解决了我的问题。

自我注意:当从别人那里inheritance代码时,首先检查基本知识!