Создание LINQ to SQL для подсчета параметра - PullRequest
0 голосов
/ 30 апреля 2010

Я пытаюсь перевести 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)

Ответы [ 2 ]

1 голос
/ 02 мая 2010

p.EpaName представляется строкой, а не коллекцией, поэтому вы не можете применить туда Count().

Вот запрос, который вы пытаетесь построить (в соответствии с запросом SQL), используяLINQ (я не знаком с 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.

0 голосов
/ 30 апреля 2010

Вот как это отформатировано в SQL и в Visual Studio SQL


ВЫБРАТЬ СЧЕТ (EpaValue) AS [Leak Count], Местоположение, EpaValue AS [Leak Desc.] FROM ChartMes.dbo.RecourceActualEPA_Report WHERE (EpaName = N'LEAK1 ') И (временная метка)>' 20100429030000 ' GROUP BY EpaValue, Местоположение ЗАКАЗАТЬ Местоположение, [Количество утечек] DESC

VB


Dim temp = (Из p в db2.RecourceActualEPA_Reports _ Где (p.Timestamp> = str1stShiftStart) и (p.Timestamp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...