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 entityquery( Fluent API) を作成して、その結果がs のリストを持ち、それぞれに s のリストが含まれていることAによってオブジェクトを検索したいのですが 、次のクエリを作成しましたが、いくつかのエラーがあります。IdAViewModelBViewModelBViewModelCViewModels

 _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);

どうやってやるの?

4

1 に答える 1

3

SelectManySelectに、型キャスト(ICollection)をに置き換えてみてくださいToList()

_uow.Repository<A>()
    .All()
    .Select(a => new AViewModel
    {
        Id = a.Id,
        Name = a.Name,
        Bs = a.Bs.Select(b => new BViewModel
        {
            Id = b.Id,
            Name = b.Name,
            Cs = b.Cs.Select(c => new CViewModel
            {
                Id = c.Id,
                Name = c.Name
            }).ToList()
         }).ToList()
    })
    .FirstOrDefault(a => a.Id == Id);
于 2014-09-14T07:56:59.767 に答える