2017-06-05 2 views
0

J'ai écrit une requête qui sélectionne l'enregistrement le plus élevé de tbl. Je veux vérifier s'il n'y a pas d'enregistrement dans TBL ma requête renvoie des données fausses comme (StudentID = 1, HighScore = 0)
SI NON EXIST Recored Sélectionnez certaines données

var queryWin = (from T in ((from tbl_ActPoints in dc.tbl_ActPoints 
       select new 
       { 
        tbl_ActPoints.StudentId, 
        tbl_ActPoints.Score 
       })) 
    group T by new 
    { 
     T.StudentId 
    } into g 
    orderby 
     ((System.Int32?)g.Sum(p => p.Score) ?? (System.Int32?)0) descending 
    select new 
    { 
     g.Key.StudentId, 
     HighScore = ((System.Int32?)g.Sum(p => p.Score) ?? (System.Int32?)0) 
    }).Take(1); 

Répondre

0

Essayez ceci:

var queryWin = (from T in ((from tbl_ActPoints in dc.tbl_ActPoints 
       select new 
       { 
        tbl_ActPoints.StudentId, 
        tbl_ActPoints.Score 
       })) 
    group T by new 
    { 
     T.StudentId 
    } into g 
    orderby 
     ((System.Int32?)g.Sum(p => p.Score) ?? (System.Int32?)0) descending 
    select new 
    { 
     g.Key.StudentId, 
     HighScore = ((System.Int32?)g.Sum(p => p.Score) ?? (System.Int32?)0) 
    }).Take(1); 

var result = queryWin.FirstOrDefault(); 

if (result == null) 
    result = new { StudentId = 1, HighScore=0 }; 
+0

son travail, où dois-je utiliser ce code? –

+0

Modifié la réponse – coolswastik

0

Nettoyage du code un peu :

var queryWin = (from tbl_ActPoints in dc.tbl_ActPoints 
       group new 
       { 
        tbl_ActPoints.StudentId, 
        tbl_ActPoints.Score 
       } by tbl_ActPoints.StudentId into g 
       orderby 
        (g.Sum(p => p.Score) ?? 0) descending 
       select new StudentHighScore 
       { 
        g.Key.StudentId, 
        HighScore = (g.Sum(p => p.Score) ?? 0) 
       }).FirstOrDefault() 
        ?? new StudentHighScore { StudentID = 1, HighScore = 0}; 

l'astuce et le code de coolswastik raison ne fonctionnait pas, comme le fait que deux objets anonymes, même avec les mêmes propriétés, sont toujours différents, donc vous avez besoin d'une classe nommée: