我使用依赖项注入来获取数据并在我的视图中显示,这一切都很好,但是我需要您的帮助,以便根据ID字段将结果分组。
在我看来,我有这样的看法:
@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>我的数据如下所示
ID CompanyID CompanyName ContractorName
255 13 MULETA PLC YIBA ENGINEERING
255 13 MULETA PLC SUNS CONST.
260 13 MULETA PLC YIBA ENGINEERING
260 13 MULETA PLC SUNS CONST.我需要您的帮助,以分组上述数据,以获得以下结果。
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);
}和结果
[ [ { "ID": 13, "CompName": "MULETA PLC ", "ContractorName": "ENGINEERING" },
{ "ID": 13, "CompName": "MULETA PLC ", "ContractorName": "SUNS CONST." } ],发布于 2020-05-02 05:40:30
使用using System.Linq;添加对Linq的引用,并使用.GroupBy(x=>x.GroupByPropertyName)
在你的情况下,它将是;
var CompanyInfo = await Context.Company
.Where(b => b.ProductID == request.ID)
.GroupBy(b=>b.Id);CompanyInfo不是一个列表,而是一种Grouping<Key,Model>类型。请参阅下面的代码来访问其值;
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>https://stackoverflow.com/questions/61554192
复制相似问题