2
나는 다음과 같은 클래스가 :는 중첩 된 쿼리를 만들려면
public class A
{
public int Id {get;set;}
public string Name {get; set;}
public ICollection<B> Bs {get; set;}
}
public class B
{
public int Id {get;set;}
public string Name {get; set;}
public ICollection<C> Cs {get; set;}
}
public class C
{
public int Id {get;set;}
public string Name {get; set;}
}
이러한 ViewModels
가 :
public class AViewModel
{
public int Id {get;set;}
public string Name {get; set;}
public ICollection<BViewModel> BViewModels {get; set;}
}
public class BViewModel
{
public string Name {get; set;}
public ICollection<CViewModel> CViewModels {get; set;}
}
public class CViewModel
{
public string Name {get; set;}
}
나는 linq to entity
쿼리를 작성하려면 (Fluent API
)를 A
개체를 찾을 수 Id
에 의해 BViewModel
의 목록을 갖는 AViewModel
이고 각각 BViewModel
은 CViewModels
의 목록을 포함하며, 다음 쿼리를 작성했지만 약간의 오류가 있습니다 :
_uow.Repository<A>()
.All()
.Include("Bs")
.Include("Bs.Cs")
.Select(a => new AViewModel
{
Name = a.Name,
Id = a.Id,
(ICollection<BViewModel>)
a.Bs
.SelectMany(
t => a.Bs
.Select(r => new BViewModel()
{
Name = r.Name
Cs =
(ICollection<CViewModel>)
t.Cs.SelectMany(y => new CViewModel()
{
Name = y.Name
})
}
)
)
}
).FirstOrDefault(a => a.Id == 5);
어떻게 할 수 있습니까?
프로젝트를 시작하기 전에 필터링하지 않아야합니까? (조금 성능이 좋지는 않을 것입니다.하지만 쿼리 공급자가 최적화했을지라도 여전히 그렇습니다)? –
@LewsTherin, OP 코드는 마지막 부분이 아닌 다른 필터를 보여주지 않습니다 .. 'FirstOrDefault' –
넵 ... 알아요 ........... –