3
개체 목록을 3 개 결합하려고합니다. 나는 사람 목록, 주소 목록 및 주소 목록을 가지고 있습니다. person.id로 정렬 된 새 목록에 이러한 목록을 결합하여 목록보기의 데이터 소스로 사용하고 aspx 페이지의 속성에 액세스 할 수있게하려고합니다.linq을 사용하여 기본 키로 개체 세 개를 결합하는 방법
이것이 가능합니까?
개체 목록을 3 개 결합하려고합니다. 나는 사람 목록, 주소 목록 및 주소 목록을 가지고 있습니다. person.id로 정렬 된 새 목록에 이러한 목록을 결합하여 목록보기의 데이터 소스로 사용하고 aspx 페이지의 속성에 액세스 할 수있게하려고합니다.linq을 사용하여 기본 키로 개체 세 개를 결합하는 방법
이것이 가능합니까?
대략
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
(데이터를 처리하는 또 다른 방법으로 업데이트가 많은 특성을 가진 더 나은 확장, 그리고 훨씬 더 그들에게 업데이트를 지원, 데이터 클래스가 아닌 value 형을했다 그 이유 때문에) – sehe
고마워요! 이제는 이것을 DataSource에 연결하고 listview에 데이터 바인딩하고 aspx 페이지에서 속성에 액세스하는 방법을 알아야합니다. – Donnie
SQL Server에서 항상 조인을 빌드 할 수 있었고 DBML 파일을 생성하면 당신을위한 조인. 그런 다음'Person.Address.Street'를 사용하여 사람의 주소에 액세스 할 수 있습니다. 위의 방법은 EF Code First가 가장 잘 작동하는 좋은 분리 된 방식입니다. –