开发者

Linq to entities: cast result to multiple listed complex types

I'm trying to create a single linq query which populates the following models in the CompanyViewModel constructor:

public class CompanyViewModel
{
    public IList<CompanyUserViewModel> CompanyUsers { get; set; }
    ...
}

public class 开发者_如何学CCompanyUserViewModel
{
    public User User { get; set; }
    public IList<UserOperationViewModel> UsersOperations { get; set; }
}

public class UserOperationViewModel
{
    public Operation Operation { get; set; }
    public int Permission { get; set; }
}

Currently I've got the following query:

return db.Users.Where(u => u.CompanyId == companyId)
               .Select(u => new CompanyUserViewModel { 
                    User = u,
                    UsersOperations = db.UsersInOperations
                        .Where(uo => uo.UserId == uo.UserId)
                        .Select(uo => new UserOperationViewModel{
                             Operation = uo.Operation,
                             Permission = uo.Permission
                        }).ToList()
                }).ToList();

Which builds, but when the page runs I get

LINQ to Entities does not recognize the method 'System.Collections.Generic.List`1[WoodCo.Models.BusinessObject.UserOperationViewModel] ToList[UserOperationViewModel](System.Collections.Generic.IEnumerable`1[WoodCo.Models.BusinessObject.UserOperationViewModel])' method, and this method cannot be translated into a store expression.

What does one do?


Change your view model properties to use IEnumerable<T> instead of IList<T and remove the .ToList() calls.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜