2010-06-29 6 views
0

linq 식에서 채우기/업데이트 할 속성을 지정할 수 있어야합니다. 다음과 같은 방식으로 뭔가 :linq 쿼리에서 업데이트 할 속성 지정

Proxy.UpdateEmployee(List<string> propertiesNames) 
Proxy.GetEmployee() //inside the method populate only certain properties 

반환 값은 알려진 유형이어야합니다 (익명의 유형을 허용하지 않음). DLINQ가 속성 이름을 지정하여 선택하도록 허용하지만 결과는 IQueryable 인터페이스이며 알려진 유형 쿼리를 나중에 빌드하려면 AsEnumerable() 할 수 없습니다.

답변

0

리플렉션을 사용하여 인스턴스 속성을 이름으로 수정해야합니다. LINQ로 개체를 업데이트하는 경우 다음과 같은 작업을 수행해야합니다.

foreach (string propName in propertiesNames) 
{ 
    PropertyInfo prop = this.GetType().GetProperty(propName); 
    prop.SetValue(valueForProp); 
} 
+0

제안 해 주셔서 감사합니다. 이 접근 방식을 시도하면 느리게 나타납니다. 원하지 않는 부작용이 생깁니다 ... –

+0

원치 않는 부작용은 무엇을 의미합니까? 뭐보다 천천히? 이것은 수정할 속성의 문자열 이름이 지정된 객체를 수정하는 유일한 방법입니다. –

관련 문제