在C#</t>中使用Linq to SQL将Anonymous Type转换为List <t>

时间:2014-03-05 18:31:22

标签: c# linq asp.net-mvc-4

我正在使用带有Linq的MVC 4到SQL,在我的控制器类中,我打算从包含多个表的查询中获取一个List,并将其作为List显示在视图中,其中M是模型类:

在控制器中我有这个

 public List<HomeViewModel> GetHomeViewModel()
    {
        dynamic ReservationDay = (from c in hutRes.Clients
                              join r in hutRes.Reservations on c.ID_Client equals r.FK_Client
                              join ht in hutRes.Hut_Types on r.FK_HutType equals ht.ID_Hut_Type
                              join tr in hutRes.Time_Reserves on r.FK_TimeReserve equals tr.ID_Time_Reserve
                              join tc in hutRes.Type_ClientIds on c.FK_TypeClientId equals tc.ID_Type_ClientId
                              where r.DateR == DateTime.Now
                              select new
                              {
                                  r.ID_Reservation,
                                  tc.ClientId,
                                  Number = c.Number_ID,
                                  c.Name,
                                  c.Phone,
                                  time = tr.TimeReserve,
                                  ReservationDate = r.DateR
                              }).ToList();

        return ReservationDay;
    }

    public ActionResult Index()
    {

        return View(GetHomeViewModel());
    }

在视图方面,我有这个标题:

@model List<HutReservation.ViewModel.HomeViewModel>

我遇到了这个错误:

Can not implicitly convert type 'System.Collections.Generic.List<<>f__AnonymousType4 <int,string,short,string,string,string,System.DateTime,byte,string,short,string,string>>' in 'System.Collections.Generic.List<HutReservation.ViewModel.HomeViewModel>'

任何人都可以帮助我,我真的被困在这里:(

2 个答案:

答案 0 :(得分:2)

问题是您的匿名类型列表无法转换为HomeViewModel列表。

为什么你使用匿名类型呢?只需在查询中创建一个新的HomeViewModel实例(Select一个HomeViewModel而不是匿名类型。)

答案 1 :(得分:2)

而不是使用LINQ中的匿名类型:

select new HomeViewModel 
{
// Set class variables here...
}