2017-02-10 78 views
0

我想將我的LINQ查詢的結果直接存儲到模型中,但我只能通過首先將其存儲到變量中來使其工作。將LINQ組直接轉換爲模型

var mdl = (from age in dy.vwFacetPool 
         group age by new { age.AgeGroup, age.AgeString } 
         into grp 
         select new { a = grp.Key.AgeGroup, b = grp.Key.AgeString, c = grp.Count() }).ToList(); 

但我想先將它存儲到模型中而不是變量。

我有模型

public class AgeGroupCounts 
{ 
    public int AgeGroup { get; set; } 
    public string AgeValue { get; set; } 
    public int AgeCount { get; set; } 
} 

然後

public class NewEmail 
{ 
    public NewEmail() 
    { 
     this.Newz = new News(); 
     //this.Age = new AgeGroupCounts(); 
     this.AgeGroup = new List<AgeGroupCounts>(); 
    } 

    public News Newz { get; set; } 
    //public AgeGroupCounts Age { get; set; } 
    public List<AgeGroupCounts> AgeGroup { get; set; } 
} 

這樣的話,我想從選擇3個輸出字段映射到模型字段,但在這一點上很失落

model.AgeGroup = (from age in dy.vwFacetPool 
         group age by new { age.AgeGroup, age.AgeString } 
         into grp 
         select new { grp.Key.AgeGroup, grp.Key.AgeString, grp.Count() }).ToList(); 

我知道我可以將它存儲到一個var和模型,但似乎我正在做一些錯誤的方式!

+0

更改select語句:選擇新AgeGroupCounts {AgeGroup = grp.Key.AgeGroup,AgeValue = grp.Key.AgeString,AgeCount = grp.Count()? – mm8

回答

2

如果選擇AgeGroupCounts,而不是匿名類型,你會從LINQ查詢得到一個List<AgeGroupCounts>

model.AgeGroup = (from age in dy.vwFacetPool 
        group age by new { age.AgeGroup, age.AgeString } 
        into grp 
        select new AgeGroupCounts { AgeGroup = grp.Key.AgeGroup, AgeValue = grp.Key.AgeString, AgeCount = grp.Count() }).ToList(); 
+0

謝謝!對於新手的問題感到抱歉 – RobboLew

0

我覺得你的SELECT語句不應該是一個匿名類型...

select new { grp.Key.AgeGroup, grp.Key.AgeString, grp.Count()... 

嘗試,將其更改爲

select new AgeGroupCounts() { ... } 
0

這是你在找什麼?

var mdl = (from age in dy.vwFacetPool 
    group age by new { age.AgeGroup, age.AgeString } 
    into grp 
    select new AgeGroupCounts { 
     AgeGroup = grp.Key.AgeGroup, 
     AgeValue = grp.Key.AgeString, 
     AgeCount = grp.Count() 
    }).ToList();