2010-04-30 82 views
0

我正在嘗試將SQL查詢轉換爲LINQ to SQL。我不斷收到一個錯誤「順序操作符不支持類型'system.string'」如果我拿出不同的計數部分,它的工作原理。這不是因爲我在使用GROUP BY嗎?創建LINQ to SQL來計算參數

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

你能格式化你的代碼嗎? – Alex 2010-04-30 15:51:51

回答

1

p.EpaName似乎是一個字符串,而不是一個集合,所以你不能申請Count()那裏。

下面是使用LINQ(我不熟悉VB,所以查詢是寫在C#)(根據您的SQL查詢)你想構建查詢:

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 }); 

並請,在將來的格式中,使用this來突出顯示您的代碼,而不是(或不僅僅)使用VS/Management Studio。

0

這裏是它是如何在SQL和Visual Studio中 SQL


SELECT COUNT(EpaValue)AS [泄漏計數],地點,EpaValue AS [泄漏商品說明] FROM格式化ChartMes.dbo.RecourceActualEPA_Report WHERE(EpaName = N'LEAK1' )AND(時間戳)> '20100429030000' GROUP BY EpaValue,位置 ORDER BY位置,[泄漏計數] DESC

VB


昏暗溫度=(從p在db2.RecourceActualEPA_Reports _ 凡(p.Timestamp> = str1stShiftStart)和(p.Timestamp < str2ndShiftCutoff)_ 和(p.EpaName = 「Leak1」) _ 選擇p.EpaName.Distinct.Count(),p.Location,p.EpaValue)