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代码时,首先检查基本知识!