C# LINQ匿名类型未提供我需要的列表

C# LINQ匿名类型未提供我需要的列表,c#,asp.net-mvc,linq,anonymous-types,C#,Asp.net Mvc,Linq,Anonymous Types,我正在对一个对象调用Recipe进行LINQ查询,该调用需要按其分数排序。在开始时,我有一个IEnumberable类型的Recipe(已经用搜索条件过滤过)名为selectedRecipies 然后,在我朋友google的帮助下,我使用匿名类型完成了这个查询: var finalQuery = ((from h in db.StarRatings where selectedRecipies.Any(sr => sr.IDRecipe ==

我正在对一个对象调用
Recipe
进行LINQ查询,该调用需要按其分数排序。在开始时,我有一个
IEnumberable
类型的
Recipe
(已经用搜索条件过滤过)名为
selectedRecipies

然后,在我朋友google的帮助下,我使用匿名类型完成了这个查询:

var finalQuery = ((from h in db.StarRatings
                       where selectedRecipies.Any(sr => sr.IDRecipe == h.IDRecipe)
                     group h by new { h.IDRecipe } into hh
                     select new
                     {
                         hh.Key.IDRecipe,
                         Score = hh.Sum(s => s.Score)
                     }).OrderByDescending(i => i.Score));

我认为这是有效的。。。我的问题是,对于我的观点,我需要它的类型是
Recipe
,而
finalQuery
似乎是
IEnumerable而不是创建匿名类型,您需要创建
Recipe

select new Recipe // Use constructor or object initiailizer here
                 {
                     ID = hh.Key.IDRecipe,
                     Score = hh.Sum(s => s.Score)
                 }).OrderByDescending(i => i.Score))
                 .ToList(); // To make your List<T>
选择新配方//在此处使用构造函数或对象初始化器
{
ID=hh.Key.IDRecipe,
分数=hh.和(s=>s.分数)
}).OrderByDescending(i=>i.Score))
.ToList();//把你的名单列出来

您应该创建一个新类
RecipeViewModel
(或
RecipeDto
)来捕获结果:

select new RecipeViewModel
 {
     hh.Key.IDRecipe,
     Score = hh.Sum(s => s.Score)
 }).OrderByDescending(i => i.Score));
但是你说

我需要它的类型是食谱

这让我怀疑您需要提供更多(或全部)的
配方数据。因此,您可能应该深刻地重新构造查询。如果是这样,您仍然不能使用
Recipe
类本身,因为它没有
Score
属性:

from r in db.Recipes
where // .....  (do your filtering here)
select new RecipeViewModel
  {
      Id = r.Id,
      // ... more recipe properties
      Score = r.StarRatings.Sum(rating => rating.Score)
  }

假设存在导航属性Recipe.staratings。如果没有,您应该使用
join
语句来包含评级。(或引入导航属性)。

但是配方没有评分成员,因为他们已经在投票列表中有了信息。更清楚地说,我的意思是,每个配方都有“0到n”个用户“评分”的数字。也许解决办法是一步完成所有这些的平均值,然后按顺序进行,但这超出了我在linq的能力……你帮我想想。事实上,我需要配方列表来创建RecipeViewModel列表。。。所以只要创建我的RecipeViewModel列表,并在。。。我觉得自己好笨!谢谢