2012-01-20 4 views
0

"PKMvrMedsProductIssuesId"를 x=>x.PKMvrMedsProductIssueId 또는 문자열을 기반으로하지 않는 것으로 바꾸고 싶습니다. 왜? 데이터베이스 사용자가 필드의 이름을 바꾸기로 선택하면 내 프로그램이 중단되기 때문입니다.람다 확장 메서드에서 문자열 값을 바꾸는 방법

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는 데이터베이스의 필드입니다. In order는 데이터베이스에있는 테이블 컬럼의 이름을 처리합니다. – hidden

관련 문제