2013-09-06 2 views
4

initialiser 객체 내에 두 배 값을 사용하여 나는 그것이 내가 피할 수 있다고 생각 긴 이벤트에 여러 번 호출하기 때문에 적응 싶습니다C#을 - 나는 아래의 코드를

People= (from p in xDocument.Root.Descendants("People").Where(
         se => Get<int>(se.Element("ID")) != i1) 
      select new Person 
       { 
       ID = Get<int>(se.Element("ID")), 
       Skills = GetPersonSkills(Get<int>(se.Element("ID"))) 
       }).OrderBy(w => w.FirstName).ToList() 

어떻게 수 I을 대신 응용 프로그램이 Get (se.Element ("ID")) 메서드를 다시 실행하게하려면 Skills = GetPersonSkills(ID)이라고 말하면됩니다. 그런 다음 자체 ID 값을 읽습니다.

추신 : 여기서 작성한 코드는 실제 긴 코드가 아니며 목적을 설명하기 위해 단순화되었습니다. Get (se.Element ("ID")) 예제는 응용 프로그램에 시간이 많이 걸리지는 않지만 개선해야 할 부분을 강조 표시 한 것임을 알고 있습니다.

답변

2

스토어를 :

People= xDocument.Root.Descendants("People") 
    .Select(se => new { ID=Get<int>(se.Element("ID")) }) 
    .Where(x => x.ID != i1) 
    .Select(x => new Person 
      { 
      ID = x.ID, 
      Skills = GetPersonSkills(x.ID) 
      } 
    ).OrderBy(w => w.FirstName) 
    .ToList(); 
+0

너희들은 굉장 – touyets

1

Get<int>(se.Element("ID"))이 반환하는 값을 Person 생성자로 전달하고 생성자에 IDSkills 속성을 채울 수 있습니다. 익명의 유형

2
People = xDocument.Root.Descendats("People") 
    .Select(se => Get<int>(se.Element("ID"))) 
    .Where(id => id != i1) 
    .Select(id => new Person 
     { 
      ID = id, 
      Skills = GetPersonSkills(id) 
     }) 
    .OrderBy(w => w.FirstName) 
    .ToList() 
관련 문제