7

オブジェクトのリストを作成するために、Linq DataContext.ExecuteQuery("some sql statement") を使用しています

var incomes = db.ExecuteQuery<IncomeAggregate>(sqlIncomeStatement(TimeUnit));

IncomeAggregate、このクエリのレコードの結果を保持するために作成したオブジェクトです。

このオブジェクトのプロパティの 1 つが YQM です。

public int Year { get; set; }
public int Quarter { get; set; }
public int Month { get; set; }

public string YQM 
{ 
    get { return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month); } 
}
... more properties

すべてが正常にコンパイルされますが、Linq を実行すると次のエラーが発生します。

メンバー 'YQM' に値を割り当てることができません。セッターを定義しません。

しかし、明らかに、私はそれを「設定」したくありません。Y、Q、および M は、データベースへのクエリによって提供されます。YQM はクエリによって提供されません。どうにかしてオブジェクトの定義を変更する必要がありますか? (私はLinqを使い始めたばかりで、まだ速度を上げているので、非常に簡単かもしれません)

4

2 に答える 2

7

まあ、私は最終的にセッターを非公開にするだけになりました

public string YQM {
    get 
    { 
        return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month); 
    }

    private set { ;} 
}

うまくいくようです。

于 2011-08-01T11:55:14.633 に答える
1

Linq は、このオブジェクトのプロパティがデータベースからロードする値であると想定しています。明らかに、YQMセッターがないため、プロパティを設定できません。代わりに YQM をメソッドにしてみてください。

public string YQM() 
{ 
    return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month);  
}
于 2011-07-21T08:25:58.083 に答える