2010-04-30 84 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)