linq查询在c#mvc中获取聚合和普通列

时间:2014-02-12 05:58:11

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

我有两个表fooditem(itemid,itemname,itemprice)和另一个rating(itemid,vote,itemid,username)

如何在评级表和itemname中获得groupby项目组合的总和,对应于每个食物项目的总评级的itemprice。 SQL查询是

select table2.sum(votes),table1.itemname,table1.itemprice from table1,table2 where table1.itemid==table2.itemid group by table2.itemid

我从这个查询开始。祝你好运!

    List<FoodView> items= (from a in db.FoodItems 
                                   join b in db.Ratings on a.itemid equals b.itemid
                                   group b by  b.itemid into g

                                   select new FoodView
                                   {
                                    itemname=g.Select(d=>d.itemname),
                                    itemprice=g.Select(d=>d.itemprice),
                                    vote=g.Sum(d=>d.vote)
                                   }).ToList();

FoodViewModel vm = new FoodViewModel {Foodviews = items};

我的模型

  public class FoodViewModel
{
    public List<FoodView> Foodviews { get; set; }

    public FoodViewModel()
    {
        Foodviews = new List<FoodView>();
    }
}

public class FoodView
{
    public long? itemid { get; set; }
    public string itemname { get; set; }

    public long? itemprice { get; set; }

    public long? vote { get; set; }

}

1 个答案:

答案 0 :(得分:0)

Please use following query:


 var foodViewsList = (from t in fooditems
                         join r in ratings on t.itemid equals r.itemid
                         group r by new { r.itemid, t.itemname, t.itemprice } into g
                         select new FoodView
                         {
                             itemid = g.Key.itemid,
                             itemname = g.Key.itemname,
                             itemprice = g.Key.itemprice,
                             vote = g.Sum(x => x.vote)
                         }).ToList();