Linq在MVC控制器的ViewModel中将结果转换为IEnumerable

时间:2019-05-09 17:09:49

标签: c# asp.net linq model-view-controller

我正在尝试将linq查询结果放入视图模型中,但始终出现错误。 Linq查询返回多个评级结果。我想将这些多个评分结果放在IEnumerable中。

Error:  Cannot implicitly convert type Models.CustomerRating' to 'System.Collections.Generic.IEnumerable<Models.CustomerRating>'. An explicit conversion exists (are you missing a cast?)   

Linq查询

var data = from profile in _context.Customers
                       join rating in _context.CustomerRating
                       on profile.strUserID equals rating.strUserID into rt
                       from subrating in rt.DefaultIfEmpty()
                       where profile.strUserID == UserId
                       select new { p = profile, r = subrating };

我的视图模型:

  public class ServiceProvider
    {
        public CustomerProfile Customer { get; set; }

        public IEnumerable<CustomerProfile> CustomerProfiles { get; set; }
        public CustomerServices CustomerServices { get; set; }

        public FilterServicesViewModel FilterServices { get; set; }

        public CustomerRating Rating { get; set; }

        public IEnumerable<CustomerRating> CustomerRating { get; set; }
    }

我希望将概要文件的结果添加到“客户”,然后将其归为“ CustomerRating IEnumberable”。 我尝试了以下操作,但出现错误:

  foreach (var v in data)
            {
                serviceProviderViewModel.Customer = v.p;
                serviceProviderViewModel.CustomerRating = v.r;
            }

1 个答案:

答案 0 :(得分:1)

创建一个新列表并遍历linq查询结果并将其添加到该列表中

    List<CustomerRating> RatingList = new List<CustomerRating>();
            foreach (var v in data)
            {
                serviceProviderViewModel.Customer = v.p;
                RatingList.Add(v.r); 
            }
            serviceProviderViewModel.CustomerRating = RatingList;