ASP.Net C#MVC Group域模型并将结果放入ViewModel

时间:2013-07-09 13:45:07

标签: c# asp.net-mvc asp.net-mvc-3 linq entity-framework

我想从我的域模型中选择某些字段,并按域模型中的字段进行分组,并将结果放入ViewModel中 - 但是,我无法使Linq语法正确。

我的模特是:

public class Offer
{
    public int OfferId { get; set; }
    public string Inclusions { get; set; }
    public string Property { get; set; }
    public bool IncludeInOffer { get; set; }
    public Guid guid { get; set; }
    public int NumPeople { get; set; }
    public int NumNights { get; set; }
    public DateTime ArrivalDate { get; set; }
    public string CustomerName { get; set; }
    public string EmailAddress { get; set; }
    public DateTime OfferCreatedOn { get; set; }
    public string Email { get; set; }
    public string OfferReference { get; set; }

     }

我的ViewModel是:

 public class OfferVMList
{
    public string guid { get; set; }
    public int NumPeople { get; set; }
    public int NumNights { get; set; }
    public DateTime ArrivalDate { get; set; }
    public string CustomerName { get; set; }
    public string EmailAddress { get; set; }
    public DateTime OfferCreatedOn { get; set; }
    public string Email { get; set; }
    public string OfferReference { get; set; }
}

我的Linq是:

 OfferVMList item = db.Offers
        .GroupBy(x => x.OfferReference)
        .Select(ct => new OfferVMList
        {
            NumPeople = ct.NumPeople           
        })
        .OrderBy(x => x.ArrivalDate);

但是,错误消息是:

System.Linq.IGrouping<string,FGBS.Models.Offer>' does not contain a definition for 'NumPeople' and no extension method 'NumPeople' accepting a first argument of type 'System.Linq.IGrouping<string,FGBS.Models.Offer>' could be found (are you missing a using directive or an assembly reference?)

有人能看到我出错的地方吗?

谢谢

1 个答案:

答案 0 :(得分:3)

检查一下:

var item = db.Offers
        .OrderBy(x => x.ArrivalDate);
        .GroupBy(x => x.OfferReference)
        .Select(ct => ct.Select(x => new OfferVMList {
            NumPeople = x.NumPeople
        });