Использование SkipWhile
var listVU = _context.AVu
.OrderByDescending(r => r.UpdateDate)
.SkipWhile(p => !p.VuId.Equals("NP-A6666"))
.Select(x => new AVut
{
VuId = x.VuId
})
.Take(50)
.AsNoTracking()
.ToListAsync();
Пропуск проходит последовательно через перечислимые пропускающие элементы, где предикат возвращает истину - когда предикат возвращает ложь, в этом случае, когда VuID = "NP -A6666 ", остальные элементы возвращаются как новые перечисляемые.
Если вы хотите получить все до VuID.Equals("NP-A6717")
, вы можете сделать то же самое с TakeWhile
вместо Take(50)
:
var listVU = _context.AVu
.OrderByDescending(r => r.UpdateDate)
.SkipWhile(p => !p.VuId.Equals("NP-A6666"))
.Select(x => new AVut
{
VuId = x.VuId
})
.TakeWhile(p => !p.Equals("NP-A6717"))
.AsNoTracking()
.ToListAsync();
И если вы хотите чтобы исключить строку, на которой останавливается SkipWhile, просто сделайте .Skip(1)
сразу после SkipWhile(p => !p.VuId.Equals("NP-A6666"))
var listVU = _context.AVu
.OrderByDescending(r => r.UpdateDate)
.SkipWhile(p => !p.VuId.Equals("NP-A6666"))
.Skip(1)
.Select(x => new AVut
{
VuId = x.VuId
})
.Take(50)
.AsNoTracking()
.ToListAsync();