Как преобразовать этот запрос из SQL в Linq:Sql запросов к Linq
SELECT status As 'Status',
count(status) As 'Count'
FROM tbl_repair_order
WHERE contract = 'con' and
(status = 'Parts Arr' or
status = 'NA' or
status = 'New Call' or
status = 'Parts Ord' or
status = 'Parts Req' or
status = 'F Work')
GROUP BY status
Update
Спасибо Ребята, это код, который я использовал. Испытано и возвращает то же самое, что и выше:
List<string> statuses = new List<string> { "Parts Arr", "NA", "New Call", "Parts Ord", "Parts Req", "F Work"};
var result = (from x in db.tbl_repair_orders
where x.CONTRACT == strContract
&& statuses.Contains(x.STATUS)
group x.STATUS by x.STATUS into grouping
select new { Status = grouping.Key, Count = grouping.Count() });
return result;
Я думаю, что вы должны прислушаться к предупреждению Иона во второй точке его ответа. – AndyMcKenna
На самом деле вызов '.Contains()' правильно переводит на LinqToSql (и, возможно, на EF) - http://blog.wekeroad.com/2008/02/27/creating-in-queries-with- linq-to-sql/ –
После прочтения этой ссылки стоит также отметить, что использование массива вместо List приведет к генерации инструкции IN. – AndyMcKenna