Чистое решение LINQ будет:
records.Where(rec => rec.RecordGroupID == 7)
.OrderBy(rec => rec.RecId).AsEnumerable()
.Select((rec, i) => new { i, rec })
.Where(anon => anon.i == 35)
.Select(anon => anon.rec).First()
Но чем вы должны быть довольны тем фактом, что все записи, соответствующие первому условию, выбираются локально.
Edit:
После ваших комментариев: Вероятно, что-то вроде:
IEnumerable<SortedRecord> GetSortedRecords(IQueryable<Record> records
, Func<SortedRecord, bool> sortedRecordPredicate)
{
return
records.Where(rec => rec.RecordGroupID == 7)
.OrderBy(rec => rec.RecId).AsEnumerable()
.Select((rec, i) => new SortedRecord{ Sequence = i, Record = rec })
.Where(sortedRecordPredicate);
}
var result = GetSortedRecords(records, rec => rec.Record.RecordID = 35);
Где SortedRecord
, очевидно, теперь является типом, который позволяет вам вводить все виды условий. (синтаксис не проверен).
Совершенно другой подход заключается в представлении запроса в предложении WITH
.