C# 如何在LinQ的IQueryable查询中添加序列号?
这是我返回IQueryable查询的方法。我想根据记录的数量生成序列号C# 如何在LinQ的IQueryable查询中添加序列号?,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,这是我返回IQueryable查询的方法。我想根据记录的数量生成序列号 public IQueryable<CompanyModel> GetCompanyData() { var query = (from e in Context.tblCompany where e.Cmp_Id == this.CompanyId && e.TenantId == thi
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;
}
public IQueryable GetCompanyData()
{
var query=(来自Context.tblCompany中的e)
其中e.Cmp_Id==this.CompanyId
&&e.TenantId==this.TenantId
选择新公司模型()
{
CmpId=e.Cmp\u Id,
SrNo=0,
});
返回查询;
}
据我所知,查询本身生成序列号的唯一方法是使用带有2个参数的“Select”方法重载,但是它不适用于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。您可以尝试下面的代码,它可能会对您有所帮助
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;
}
public IQueryable GetCompanyData()
{
列表查询=(来自Context.tblCompany中的e)
其中e.Cmp_Id==this.CompanyId
&&e.TenantId==this.TenantId
选择新公司模型()
{
CmpId=e.Cmp\u Id,
SrNo=0,
}).ToList();
int计数器=0;
Foreach(x=>x.SrNo=counter++);
返回查询;
}
是什么阻止了你?你试过什么,什么不起作用?你具体在问什么?你是什么意思?序列号是标识零件或产品的唯一编号。你是说排号吗Select()
有一个重载Select((项目,索引))
将项目索引传递给代理。您可以在执行查询之前使用此选项,方法是枚举查询或调用ToList()
t串行no means SrNo字段显示值从1到最多记录个数,例如:Sr no Company Id 1 2 3声音像xy问题。你想达到什么目标?可能有一种没有序列号的替代方案。