아래의 간단한 예제를 사용하면 Linq를 사용하여 여러 테이블에서 결과를 SQL로 반환하는 가장 좋은 방법은 무엇입니까?
두 개의 테이블이 있다고 가정 해보십시오.
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
와 함께 모든 개를 반환하고 싶습니다 BreedName
. 나는 모든 개에게 아무런 문제없이 이와 같은 것을 사용해야합니다.
public IQueryable<Dog> GetDogs()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select d;
return result;
}
그러나 품종이있는 개를 원하고 이것을 시도하면 문제가 있습니다.
public IQueryable<Dog> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result;
}
이제 컴파일러가 Dogs를 기대하기 때문에 익명의 유형 집합을 반환 할 수는 없지만 사용자 정의 유형을 만들지 않고도 이것을 반환 할 수있는 방법이 있습니까? 아니면 자신의 클래스를 만들고 DogsWithBreedNames
select에서 해당 유형을 지정해야합니까? 아니면 다른 쉬운 방법이 있습니까?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);