4

我正在使用以下代码在 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();

当我查看运行时调试器时,我在查看属性变量的“结果视图”时看到了“InvalidCastException” 。所以,我假设我的类定义发生了一些奇怪的事情。我还假设我不需要将类的所有成员映射到 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 源代码的链接:LinqToExcel 泛型比我见过的更复杂,而且是我(显然)需要重新学习的东西。

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

4

1 回答 1

10

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

where  !String.IsNullOrEmpty(p.AssessmentID) 

这解决了我的问题。

自我注意:从他人那里继承代码时,请先检查基础知识!

于 2016-01-13T17:21:22.287 回答