2012-01-20 9 views
0

x=>x.PKMvrMedsProductIssueIdなどの文字列に基づいていないものを「PKMvrMedsProductIssuesId」に置き換えたいと思います。どうして?データベースの人々がフィールドの名前を変更することを選択した場合、私のプログラムがクラッシュすることになるからです。ラムダの拡張メソッドの文字列値を置き換える方法

public static SelectList MvrMedsProductErrors(this SelectList Object) 
{ 
    MedicalVarianceEntities LinqEntitiesCtx = new MedicalVarianceEntities(); 
    var ProductErrorsListBoxRaw = 
    (
     from x in LinqEntitiesCtx.ViewLookUpProductIssuesErrorsNames 
     select x 
    ); 

    Object = new SelectList(ProductErrorsListBoxRaw, "PKMvrMedsProductIssuesId", "MvrMedsProductIssuesErrorsNames"); 

    return Object; 
} 
+1

ここにはラムダありません(「MyTypePropertyは」あなたの「PKMvrMedsProductIssuesId」は任意「がMyType」が定義されて、あなたがあなたの財産を持っていることが、あなたの種類の一つです)。 –

+0

これはデータベースに接続しているエンティティで処理する必要があります。 – cpoDesign

+0

それはどういう意味ですか?すべての記事は、私のエンティティでそれを処理する方法のヒントキーワードですか? – hidden

答えて

1

あなたはSelectListを使用しています。そのコンストラクタを呼び出すには、文字列が必要です。私たちが提案できる変更は、(どこかの)文字列がそのコンストラクタに渡される結果になります。

良いニュースは:文字列はどこから来てもかまいません。それはデータベースからのconfigから来ることができます...どこまで好きですか?

+0

実体定義から来ていますedmx.file – hidden

0

私はここで正確なコンテキストを(正確に「PKMvrMedsProductIssuesId」は何であるか)分かりませんが、例えば、このようなヘルパーメソッドを使用することができます得るために式を使用するには

public static string GetPropertyAsString<T>(Expression<Func<T, object>> expression) 
{ 
    return GetPropertyInfo(expression).Name; 
} 

を文字列:

GetPropertyAsString<MyType>(x => x.MyTypeProperty); 

+0

PkMvrMedsProductIssuesIdはデータベース内のフィールドです。データベース内のテーブルの列の名前を処理します。 – hidden