2016-02-21 24 views
1

I'm计数试图让这个SQL请求如何使LINQ ASP.NET C#

SELECT number, COUNT(number) 
FROM Bet GROUP BY number ORDER BY COUNT(number) DESC; 

代码

public static List<Apuesta> GetAllNumbers(ApplicationDbContext db) 
{ 
    List<Bet> bets = (from b in db.Bet select b.Number).Count(); 

    return bets; 
} 

,我想使用LINQ使用它的一个功能。

+1

让我们了解您已经尝试过自己... –

+0

您分配一个int(从'Count')到'名单 '。你想在每个“Bet”中包含“Number”数目的列表吗? (所以'列表') –

+0

是的,我试图做到这一点!但它说,你不能转换整数 - 赌注清单 –

回答

1

为了得到你想要达到你可以提出查询到anonymous type结果:

var bets =db.Bet.GroupBy(b=>b.Number) 
       .Select(g=>new {Number=g.Key, Count=g.Count()}) 
       .OrderByDescending(e=>e.Number); 

还是一个DTO

public class BetDTO 
{ 
public int Number{get;set;} 
public int Count{get;set;} 
} 

然后使用自定义类项目的结果:

var bets =db.Bet.GroupBy(b=>b.Number) 
      .Select(g=>new BetDTO{Number=g.Key, Count=g.Count()}) 
      .OrderByDescending(e=>e.Number) 
      .ToList();  
+0

非常感谢,但现在我需要加上数字的数量,例如,我有两个数字50,但每一个数量不同。所以,我没有想法该怎么做。再次感谢。 –

+0

我在BetDTO中添加金额并在cusmtom类中使用Amount = ap.Sum(),它的工作原理非常感谢Octavioccl! –

+0

不客气@JohanSánchez,很高兴我能帮到;) – octavioccl

0

除了@octavioccl。如果你喜欢类似SQL的LINQ表达式,你可以使用代码片段:

var bets = from b in bets group b by b.Number into g orderby -g.Key select new { Number = g.Key, Count = g.Count() });