2010-04-30 4 views
0

Je tente de traduire une requête sql en LINQ to SQL. Je continue d'obtenir une erreur "les opérateurs de séquence ne sont pas supportés pour le type" system.string "" Si je supprime la partie de comptage distincte, cela fonctionne. N'est-ce pas parce que j'utilise le GROUP BY?Création de LINQ to SQL pour le comptage d'un paramètre

SELECT COUNT(EpaValue) AS [Leak Count], Location, EpaValue AS [Leak Desc.] 
FROM   ChartMes.dbo.RecourceActualEPA_Report 
WHERE  (EpaName = N'LEAK1') AND (Timestamp) > '20100429030000' 
GROUP BY EpaValue, Location 
ORDER BY Location, [Leak Count] DESC 


Dim temp = (From p In db2.RecourceActualEPA_Reports _ 
        Where (p.Timestamp >= str1stShiftStart) And (p.Timestamp < str2ndShiftCutoff) _ 
        And (p.EpaName = "Leak1") _ 
        Select p.EpaName.Distinct.Count(), p.Location, p.EpaValue) 
+1

Pourriez-vous s'il vous plaît formater votre code? – Alex

Répondre

1

p.EpaName semble être une chaîne, pas une collection de sorte que vous ne pouvez pas appliquer Count() là.

Voici la question que vous essayez de construire (en fonction de votre requête SQL) en utilisant LINQ (je ne suis pas familier avec VB, de sorte que la requête est écrit en C#):

var temp = 
    db2.RecourceActualEPA_Reports 
     .Where(p => 
       p.Timestamp >= str1stShiftStart && 
       p.Timestamp < str2ndShiftCutoff && 
       p.EpaName == "Leak1" 
     ).GroupBy(p => new { Key1 = p.EpaValue, Key2 = p.Location }) 
     .Select(g => new 
     { 
      Count = g.Count(), 
      Value = g.Key.Key1, 
      Location = g.Key.Key2 
     }).OrderBy(i => new { i.Location, i.Count }); 

Et s'il vous plaît , dans le futur format et mettez votre code en surbrillance en utilisant this, pas (ou pas seulement) en utilisant VS/Management Studio.

0

Voici comment il est formaté dans SQL et Visual Studio SQL


SELECT COUNT (EpaValue) AS [fuite comte], Emplacement, EpaValue AS [fuite Desc.] DE ChartMes.dbo.RecourceActualEPA_Report OU (EpaName = N'LEAK1') ET (Timestamp)> '20100429030000' GROUP BY EpaValue, Lieu ORDER BY Lieu, [fuite comte] CEEPC VB


Dim temp = (De p Dans db2.RecourceActualEPA_Reports _ Où (p.Timestamp> = str1stShiftStart) et (p.Timestamp < str2ndShiftCutoff) _ Et (p.EpaName = "Leak1") _ Sélectionnez p.EpaName.Distinct.Count(), p.Location, p.EpaValue)