Как добавить серийный номер в запросе IQueryable в LinQ? - PullRequest
0 голосов
/ 09 июля 2019

Это мой метод, который возвращает IQueryable запрос. Я хочу создать серийный номер на основе количества записей.

public IQueryable<CompanyModel> GetCompanyData()
{

   var query = (from e in Context.tblCompany
                         where e.Cmp_Id == this.CompanyId
                         && e.TenantId == this.TenantId
                         select new CompanyModel()
                         {
                             CmpId = e.Cmp_Id,
                             SrNo = 0,
                         });
   return query;
}

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы можете попробовать приведенный ниже код, может он вам поможет

public IQueryable<CompanyModel> GetCompanyData()
{

List<CompanyModel> query = (from e in Context.tblCompany
                         where e.Cmp_Id == this.CompanyId
                         && e.TenantId == this.TenantId
                         select new CompanyModel()
                         {
                             CmpId = e.Cmp_Id,
                             SrNo = 0,
                         }).ToList();

 int counter=0;
 query.Foreach(x=>x.SrNo = counter++);

return query;
}
0 голосов
/ 09 июля 2019

Насколько мне известно, единственный способ получить порядковый номер, сгенерированный самим запросом, - это использовать перегрузку метода "Select" с 2 параметрами, однако он не работает с IQueryable, поэтому ваш запрос будет выглядеть следующим образом:

Context.tblCompany.Where(e => e.Cmp_Id == this.CompanyId && e.TenantId == this.TenantId)
    .Select(e => new { CmpId = e.Cmp_Id })
    .AsEnumerable()
    .Select((e, i) => new CompanyModel { CmpId = e.CmpId, SrNo = i });

Очевидно, этот порядковый номер будет сгенерирован на клиенте, и результирующее выражение больше не может рассматриваться как IQueryable. В то же время, часть перед «AsEnumerable» будет успешно переведена в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...