2016-11-03 11 views
2

どのプレイヤーが最も多くのプレイヤーを持つクラブを見つけるかしたがって、クエリには、最も多くのプレイヤーを持つすべてのクラブが含まれます。たとえば、最初のクラブに3人のプレイヤーがいれば、2番目のクラブには5人のプレイヤーがいて、3番目のクラブには5人のプレイヤーもいれば、2番目と3番目のクラブがクエリーに入ります。そして私はクラブのリストを返す必要があります。Entity Framework LINQ

public List<Club> ClubWithMostPlayers() 
{ 
    using (var context = new dataContext()) 
    { 
      var query = ????? 

      return query.ToList(); 
    } 
} 

これらは私が

public class Player 
{ 
    public int PlayerId { get; set; } 
    public string name { get; set; } 
    public string surname { get; set; } 
    public int yearOfBirth { get; set; } 

    public virtual List<PlayerClub> playerClub { get; set; } 
} 

public class Club 
{ 
    public int ClubId { get; set; } 
    public string name { get; set; } 
    public string stadium { get; set; } 
    public int yearOfConstruction { get; set; } 

    public virtual List<PlayerClub> playerClub { get; set; } 
} 

public class PlayerClub 
{ 
    public int PlayerClubId { get; set; } 

    public int PlayerId { get; set; } 
    public int ClubId { get; set; } 

    public virtual Player player { get; set; } 
    public virtual Club club { get; set; } 

    public int from { get; set; } 
    public int to { get; set; } 
    public int appearances { get; set; } 
} 

を使用するクラスIは、SQLでそれを行う方法を知っているが、ないLINQ

ですが、あなたのクエリを分割に関するヘルプ

答えて

5

どういただき、ありがとうございます2つの部分に分ける。

// get number of maximum number of players in one club 
var count = context.Clubs.Select(c => c.playerClub.Count()).Max(); 

// get clubs with specific number of players 
var query = context.Clubs 
    .Where(c => c.playerClub.Count() == count); 
+0

ありがとうございます非常に素晴らしい解決策であり、多くのコードです:) – klemsi123

関連する問題