Я хочу изменить следующий 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
Я хочу изменить следующий 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
запрос, который вы просили, просто чтобы показать, что это почти равны. Я расщепляется его на три части, чтобы понять, как она работает
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()
;
Попробуйте это: -
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();
Я скажу, что в LINQ это почти равны, так что вы могли бы попытаться написать его. – xanatos
Хорошо, и что вы пытались перевести этот sql в LINQ? –