Jquery 如何在asp.net中对数据进行分组?
我使用依赖注入来获取数据并在我的视图中显示,这一切都很好,但我需要您的帮助来根据ID字段对结果进行分组 我认为:Jquery 如何在asp.net中对数据进行分组?,jquery,asp.net,asp.net-mvc,linq,asp.net-core,Jquery,Asp.net,Asp.net Mvc,Linq,Asp.net Core,我使用依赖注入来获取数据并在我的视图中显示,这一切都很好,但我需要您的帮助来根据ID字段对结果进行分组 我认为: @inject ICompanyService companyListService @{ var ProductID = Model.ID; var compInfo = await companyListService.GetCompanyByID(ProductID); } 为了创建一个列表,我使用了以下代码 <ul id="list" style=
@inject ICompanyService companyListService
@{
var ProductID = Model.ID;
var compInfo = await companyListService.GetCompanyByID(ProductID);
}
为了创建一个列表,我使用了以下代码
<ul id="list" style="line-height: 0.01;">
@foreach (var item in compInfo)
{
<li data-expanded="false" class="panel-handler" data-id="@item.ID">@item.CompanyName
<ul>
<li class="panel-handler" data-expanded="true" data-id="@subcontractor.ID">@scontractor.ContractorName</li>
</ul>
</li>
}
</ul>
我需要您的帮助,将上述数据分组,以获得以下结果
MULETA PLC
>>>YIBA ENGINEERING
>>>SUNS CONST.
MULETA PLC
>>>YIBA ENGINEERING
>>>SUNS CONST.
我的linq表情看起来像
var CompanyInfo = await Context.Company
.Where(b => b.ProductID == request.ID)
.ToListAsync();
我需要你的帮助,我将结果按ID字段分组
我的API控制器
[HttpGet("{ID}")]
public async Task<IActionResult> GetCompanyByID(int produtID)
{
var company= await companyListService.GetCompanyByID(productID);
var companyList= company.GroupBy(x => x.ID);
return Ok(companyList);
}
使用System.Linq添加对Linq的引用,并使用
并使用.GroupBy(x=>x.GroupByPropertyName)
在你的情况下,它将是
var CompanyInfo = await Context.Company
.Where(b => b.ProductID == request.ID)
.GroupBy(b=>b.Id);
CompanyInfo
不是一个列表,而是一种分组类型。请参阅下面的代码以访问其值
var CompanyInfo = await Context.Company
.Where(b => b.ProductID == request.ID)
.GroupBy(b=>b.ResultId);
foreach(var request in CompanyInfo){
Console.WriteLine(request.Key); // this will be the Request Id
foreach(var properties in request){
// this will be your model containing the properties
Console.WriteLine(request);
Console.WriteLine(request.Id);
Console.WriteLine(request.CompanyId);
Console.WriteLine(request.ContractorName);
}
}
首先尝试这个简单的标记,然后根据您的设计修改它。你需要做一个嵌套循环
<ul>
@foreach (var item in compInfo)
{
<li>
@item.Key.ToString() - @item.FirstOrDefault().CompanyName
<ul>
foreach(var record in item){
<li>@record.ContractorName</li>
}
</ul>
</li>
}
</ul>
@foreach(compInfo中的var项目)
{
-
@item.Key.ToString()-@item.FirstOrDefault().CompanyName
foreach(项目中的var记录){
- @record.ContractorName
}
}
Jerdine,我明白了,谢谢!但是无法解析JSON。原始结果:System.InvalidOperationException:不支持客户端GroupBy。
有什么想法吗?您好@Rob您需要在控制器中执行此操作。请编辑您的问题并展示您的操作方式好吗?请分享您调用API的控制器代码和视图。非常感谢,我认为它看起来像是在Json中工作,但还需要您的帮助,我如何更新我的foreach以显示[[[{“ID”:13,“CompName”:“MULETA PLC”,“ContractorName”:“ENGINEERING”},{“ID”:13,“CompName”:“MULETA PLC”,“ContractorName”:“SUNS CONST.”],
你好,Jerdine,我更新了我的问题,根据您的建议添加了API控制器,它正在工作,但我认为需要您帮助更新foreach:)非常感谢'
var CompanyInfo = await Context.Company
.Where(b => b.ProductID == request.ID)
.GroupBy(b=>b.ResultId);
foreach(var request in CompanyInfo){
Console.WriteLine(request.Key); // this will be the Request Id
foreach(var properties in request){
// this will be your model containing the properties
Console.WriteLine(request);
Console.WriteLine(request.Id);
Console.WriteLine(request.CompanyId);
Console.WriteLine(request.ContractorName);
}
}
<ul>
@foreach (var item in compInfo)
{
<li>
@item.Key.ToString() - @item.FirstOrDefault().CompanyName
<ul>
foreach(var record in item){
<li>@record.ContractorName</li>
}
</ul>
</li>
}
</ul>