2013-07-09 46 views
0

我想從我的域模型中選擇某些字段,並按域模型中的字段進行分組,然後將結果放入ViewModel中 - 但是,我可以'不要讓Linq語法正確。ASP.Net C#MVC組域模型並將結果放入ViewModel

我的型號是:

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; } 

    } 

我的視圖模型爲:

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?)

任何人都可以看到我要去哪裏錯了嗎?

謝謝

+0

其因爲'ct'其實是一個事物,而不是一個單一的實體 –

+0

好,謝謝名單 - 我那麼如何從數據庫的結果。提供,分組並進入ViewModel? – Mark

+0

您的視圖模型不適用。一個組意味着你有一個關鍵字集合(通過你的案例中的'OfferReference')和每個你有一個'Offer'集合的關鍵字。那麼這怎麼可能適合你的'OfferVMList'模型呢? –

回答

3

檢查:

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

'NumPeople'是一個整數。 'ct.Select'返回'IEnumerable '。 –

+1

謝謝 - 但給出的錯誤:不能隱式轉換類型'System.Collections.Generic.IEnumerable '到'int' – Mark

+0

@ user1041617 sry,檢查更新 – YD1m