Мне это не кажется слишком сложным, если я не читаю это неправильно:
var query = from c in db.Customer
where c.name.StartsWith("A")
orderby c.name
select c.name.ToUpper();
return query.Skip(20).Take(10).ToList();
Многие люди, кажется, переводят ваш SQL напрямую в LINQ, но похоже, что они 'отсутствует точка вашего составного запроса (и тот факт, что вы выбираете из той же таблицы тот же ORDER-BY).Метод Skip
устраняет необходимость в части C1.ID NOT IN (SELECT TOP 20...
, поэтому вы можете сделать все это в одном запросе LINQ.
Одно крошечное замечание: если ваша база данных нечувствительна к регистру (что, вероятно, так и есть),вам может нужно заменить where c.name.StartsWith("A")
на where c.name.StartsWith("A", StringComparison. OrdinalIgnoreCase)
.Я не уверен в этом, хотя;Я бы попробовал это без StringComparison
сначала.