Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在asp.net中对数据进行分组?_Jquery_Asp.net_Asp.net Mvc_Linq_Asp.net Core - Fatal编程技术网

Jquery 如何在asp.net中对数据进行分组?

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=

我使用依赖注入来获取数据并在我的视图中显示,这一切都很好,但我需要您的帮助来根据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>
我需要您的帮助,将上述数据分组,以获得以下结果

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>