Я в настоящее время "разбираюсь" через IQueryable, который имеет много полей {Table1Id, Table1Label, IsActive, ...} и может быть несколько записей в результате IQueryable для PdcId, например:
var result = from a in _entities.table1
join b in _entities.table2 on new { a.Table1Id, a.Table1LevelId } equals new { Table1Id = b.Table2Id, Table1LevelId = b.Table2LevelId }
join c in _entities.Table3 on a.Table1Id equals c.Table1Id into cc from ccc in cc.DefaultIfEmpty()
where a.Valide == true
select new MeteringPointDetailModel
{
Table1Id = a.Table1Id,
Table1Label = a.Label,
IsActive = a.IsActive,
Table3Label = ccc.Label,
};
Я попробовал этот код, но когда я вижу результат, генерируемый в SQL с помощью SQL Server Profiler, запрос выполняется без остановки !!(создать несколько запросов SQL).
var data = await result.Where(i => result.GroupBy(p => p.Table1Id)
.Select(t => t.Key)
.Skip(query.Page).Take(query.PageSize)
.Contains(i.Table1Id)).ToListAsync();
Как бы я это сделал, если бы я хотел сначала сгруппировать по Table1Id, а затем пропустить и взять отдельный Table1Id.
, например: если яесть результат, который имеет две записи, одна из которых заканчивается # 50, а другая 51, если я перевожу на 50, я не получу запись 51, и я хочу ее.