2011-08-23 3 views
3

개체 목록을 3 개 결합하려고합니다. 나는 사람 목록, 주소 목록 및 주소 목록을 가지고 있습니다. person.id로 정렬 된 새 목록에 이러한 목록을 결합하여 목록보기의 데이터 소스로 사용하고 aspx 페이지의 속성에 액세스 할 수있게하려고합니다.linq을 사용하여 기본 키로 개체 세 개를 결합하는 방법

이것이 가능합니까?

답변

4

대략

using System.Linq; 

class Person 
{ 
    public int Id; 
    public string Name; 
} 

class Address 
{ 
    public int Id; 
    public string Street; 
} 

class PersonAddress 
{ 
    public int PersonId, AddressId; 
} 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var personList = new [] 
     { 
      new Person { Id = 1, Name = "Pete" }, 
      new Person { Id = 2, Name = "Mary" }, 
      new Person { Id = 3, Name = "Joe" } 
     }; 

     var addressList = new [] 
     { 
      new Address { Id = 100, Street = "Home Lane" }, 
      new Address { Id = 101, Street = "Church Way" }, 
      new Address { Id = 102, Street = "Sandy Blvd" } 
     }; 

     var relations = new [] 
     { 
      new PersonAddress { PersonId = 1, AddressId = 101 }, 
      new PersonAddress { PersonId = 3, AddressId = 101 }, 

      new PersonAddress { PersonId = 2, AddressId = 102 }, 
      new PersonAddress { PersonId = 2, AddressId = 100 } 
     }; 

     var joined = 
        from par in relations 
        join p in personList 
         on par.PersonId equals p.Id 
        join a in addressList 
         on par.AddressId equals a.Id 
        select new { Person = p, Address = a }; 

     foreach (var record in joined) 
      System.Console.WriteLine("{0} lives on {1}", 
            record.Person.Name, 
            record.Address.Street); 
    } 
} 

출력 :

Pete lives on Church Way 
Mary lives on Sandy Blvd 
Mary lives on Home Lane 
Joe lives on Church Way 
+0

(데이터를 처리하는 또 다른 방법으로 업데이트가 많은 특성을 가진 더 나은 확장, 그리고 훨씬 더 그들에게 업데이트를 지원, 데이터 클래스가 아닌 value 형을했다 그 이유 때문에) – sehe

+0

고마워요! 이제는 이것을 DataSource에 연결하고 listview에 데이터 바인딩하고 aspx 페이지에서 속성에 액세스하는 방법을 알아야합니다. – Donnie

+0

SQL Server에서 항상 조인을 빌드 할 수 있었고 DBML 파일을 생성하면 당신을위한 조인. 그런 다음'Person.Address.Street'를 사용하여 사람의 주소에 액세스 할 수 있습니다. 위의 방법은 EF Code First가 가장 잘 작동하는 좋은 분리 된 방식입니다. –

관련 문제