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 のソース コードへのリンクは次のとおり です。

この問題の原因となるような、私が見逃しているものはありますか? これらのエラーを解決するためにどこを見ればよいか、または何をすべきかについてのアイデアはありますか?

4

1 に答える 1

10

クエリの where 句がエラーの原因です。コンテキストに適用できない null キーワードを参照していました。私はそれを次のように変更しました:

where  !String.IsNullOrEmpty(p.AssessmentID) 

これで私の問題は解決しました。

自分へのメモ: 他の人からコードを継承するときは、まず基本を確認してください。

于 2016-01-13T17:21:22.287 に答える