2008-10-21 4 views
1

정확히 동일한 열을 가진 두 개의 LINQ 개체가 있고 다른 개체의 필드로 하나를 업데이트하고 싶습니다. 먼저 파일의 일부 데이터에서 새 객체를 만든 다음 동일한 ID로 기존 항목을 데이터베이스에 쿼리합니다. 내가 뭘하고 싶은지 새로 만든 된 개체 세부 정보로 기존 개체 세부 정보를 업데이트합니다.한 LINQ 개체의 열을 다른 LINQ 개체로 업데이트하십시오.

지금까지 내가 해왔 던 방식은 모든 열을 나열하고 수동으로 업데이트하는 것입니다. 그러나 이것이 볼 수 있듯이 유지 관리 문제가 발생할 수 있습니다.

With OldCaller 
      .ADDRESS = NewCaller.ADDRESS 
      .COMPANY = NewCaller.COMPANY 
      .CONTACT_HOURS = NewCaller.CONTACT_HOURS 
      .CONTACT_NAME = NewCaller.CONTACT_NAME 
      .CUSTOMER_ID = NewCaller.CUSTOMER_ID 
      .EMAIL_ADDRESS = NewCaller.EMAIL_ADDRESS 
      .FAX_NUMBER = NewCaller.FAX_NUMBER 
      .FAX_TYPE = NewCaller.FAX_TYPE 
      .MOBILE = NewCaller.MOBILE 
      .POSTCODE = NewCaller.POSTCODE 
      .PUBLIC_ADDRESS = NewCaller.PUBLIC_ADDRESS 
      .PUBLIC_TELEPHONE = NewCaller.PUBLIC_TELEPHONE 
      .STATE = NewCaller.STATE 
      .SUBURB = NewCaller.SUBURB 
      .TELEPHONE = NewCaller.TELEPHONE 
     End With 

나는 이것을 조금 닦을 방법을 찾고 싶다. 누구든지 내가 필요한 것을하는 더 좋은 방법을 알고 있습니까?

감사합니다.

답변

1

템플릿에서 개체의 인스턴스를 만들 때 이런 일을합니다. 기본적으로 템플릿의 공용 속성을 반복하고, 생성되는 개체에서 해당 속성을 찾고, 리플렉션을 통해 새 개체의 속성 setter를 호출하는 메서드가 있습니다.

0

아직 테스트하지는 않았지만 이것이 내가 생각해 낸 것입니다.

 Dim _OldCallerProperties = OldCaller.GetType().GetProperties(Reflection.BindingFlags.Public) 
     Dim _NewCallerProperties = NewCaller.GetType.GetProperties(Reflection.BindingFlags.Public) 

     For Each Prop In _OldCallerProperties 
      Dim _matchingProperty = _NewCallerProperties.Where(Function(p) p.Name = Prop.Name).FirstOrDefault 
      Dim _newvalue = _matchingProperty.GetValue(_matchingProperty, Nothing) 
      Prop.SetValue(Prop, _newvalue, Nothing) 
     Next 

내가 테스트하지는 않았지만 제대로 작동 할 것이라고 확신합니다.

관련 문제