我正在尝试将SQL查询转换为LINQ to SQL。我不断收到错误“类型'system.string'不支持序列运算符”如果我取出了不同的计数部分,它就可以了。是不是因为我正在使用GROUP BY?
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)
答案 0 :(得分:1)
p.EpaName
似乎是一个字符串,而不是一个集合,因此您无法在那里应用Count()
。
以下是您尝试使用LINQ构建的查询(根据您的SQL查询)(我不熟悉VB,因此查询是用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 });
请在未来的格式中使用this突出显示您的代码,而不是(或不仅仅)使用VS / Management Studio。
答案 1 :(得分:0)
以下是在SQL和Visual Studio中对其进行格式化的方式 SQL
SELECT COUNT(EpaValue)AS [泄漏计数],位置,EpaValue AS [泄漏描述] 来自ChartMes.dbo.RecourceActualEPA_Report WHERE(EpaName = N'LEAK1')和(时间戳)&gt; '20100429030000' GROUP BY EpaValue,位置 按位置排序,[泄漏计数] DESC
VB
Dim temp =(来自p in db2.RecourceActualEPA_Reports _ 其中(p.Timestamp&gt; = str1stShiftStart)和(p.Timestamp&lt; str2ndShiftCutoff)_ 并且(p.EpaName =“Leak1”)_ 选择p.EpaName.Distinct.Count(),p.Location,p.EpaValue)