2015-03-16 6 views
0

Я хочу изменить следующий SQL запрос LinqSql запрос сервера LINQ

select top(1) CableCode 
from (SELECT top(10) (cablecode) 
     FROM Cables 
     WHERE CableCode>=20704 
     ORDER BY CableCode) as a 
order by CableCode desc 
+3

Я скажу, что в LINQ это почти равны, так что вы могли бы попытаться написать его. – xanatos

+2

Хорошо, и что вы пытались перевести этот sql в LINQ? –

ответ

1

запрос, который вы просили, просто чтобы показать, что это почти равны. Я расщепляется его на три части, чтобы понять, как она работает

var innerQuery = (from x in db.Cables 
        where x.CableCode >= 20704 
        orderby x.CableCode 
        select x.CableCode).Take(10); 

var outerQuery = (from x in innerQuery 
        orderby x descending 
        select x); // Useless: .Take(1); 

int? singleElement = outerQuery.FirstOrDefault(); // Instead of TOP(1) 

Обратите внимание, что вместо .Take(1) (эквивалент TOP(1)), что бы возвратил IEnumerable<>, я сразу использовал FirstOrDefault();

0

Попробуйте это: -

var result = (from c in (db.Cables.Where(x => x.CableCode >= 20704) 
           .OrderBy(x => x.CableCode).Take(10)) 
       orderby c.CableCode descending select c.CableCode).FirstOrDefault(); 
Смежные вопросы