Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
Javascript 如何使用数据属性对列表项进行分组?_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript 如何使用数据属性对列表项进行分组?

Javascript 如何使用数据属性对列表项进行分组?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,如何对基于数据属性的列表项数据组进行分组?基于以下条件,我试图避免在我的列表中出现重复 我的条件是: 如果相同的PartyName和SubPartyName多次出现,我想合并它们 如果相同的PartyName但不同的subPartyName按PartyName分组 下面是我创建列表的代码: <ul id="list"> @foreach (var item in Info){ <li data-group="@item.PartyName" dat

如何对基于数据属性的列表项数据组进行分组?基于以下条件,我试图避免在我的列表中出现重复

我的条件是:

  • 如果相同的
    PartyName
    SubPartyName
    多次出现,我想合并它们
  • 如果相同的
    PartyName
    但不同的
    subPartyName
    PartyName
    分组 下面是我创建列表的代码:

        <ul id="list">
         @foreach (var item in Info){
          <li data-group="@item.PartyName" data-expanded="true"> @item.PartyName
             <ul>
                 <li data-group="@item.SubPartyName" data-expanded="true">@item.subPartyName</li>
             </ul>
         </li>
         }</ul>
    
      @foreach(信息中的变量项){
    • @item.PartyName
      • @item.SubPartyName
    • }
    我当前的列表如下所示:

    甲方
    • A小方
  • 甲方
    • B小队
    甲方
    • B小队
    甲方
    乙方
    丙方

    我希望看到我的清单如下:


    甲方
    • A小方
    • B小队
    乙方
    丙方
    你可以这样做

     public class InfoClass
    {
        public string PartyName { get; set; }
        public string SubPartyName { get; set; }
    }
    
    public class NewInfoClass
    {
        public string PartyName { get; set; }
        public List<string> SubPartyName { get; set; }
    }
    
    公共类信息类
    {
    公共字符串PartyName{get;set;}
    公共字符串子PartyName{get;set;}
    }
    公共类NewInfoClass
    {
    公共字符串PartyName{get;set;}
    公共列表子部件名称{get;set;}
    }
    
    控制器动作

    public ActionResult Index()
        {
            List<InfoClass> infos = new List<InfoClass>();
            infos.Add(new InfoClass() { PartyName = "Party A", SubPartyName = "SubParty A" });
            infos.Add(new InfoClass() { PartyName = "Party A", SubPartyName = "SubParty B" });
            infos.Add(new InfoClass() { PartyName = "Party A", SubPartyName = "SubParty B" });
            infos.Add(new InfoClass() { PartyName = "Party A" });
            infos.Add(new InfoClass() { PartyName = "Party B" });
            infos.Add(new InfoClass() { PartyName = "Party C" });
    
            var results = from p in infos
                          group p.SubPartyName by p.PartyName into g
                          select new { PartyName = g.Key, SubPartyNames = g.ToList().Distinct() };
    
            List<NewInfoClass> newList = new List<NewInfoClass>();
    
            int count = 0;
            foreach (var item in results)
            {
                newList.Add(new NewInfoClass()
                {
                    PartyName = item.PartyName,
                });
                newList[count].SubPartyName = new List<string>();
                foreach (var item2 in item.SubPartyNames)
                {
                    if (item2 != null)
                    {
                        newList[count].SubPartyName.Add(item2);
                    }
                }
                count++;
            }
            return View(newList);
        }
    
    public ActionResult Index()
    {
    列表信息=新列表();
    添加(新的InfoClass(){PartyName=“Party A”,SubPartyName=“SubParty A”});
    添加(新的InfoClass(){PartyName=“Party A”,SubPartyName=“SubParty B”});
    添加(新的InfoClass(){PartyName=“Party A”,SubPartyName=“SubParty B”});
    Add(new InfoClass(){PartyName=“Party A”});
    添加(新的InfoClass(){PartyName=“Party B”});
    Add(newinfoclass(){PartyName=“Party C”});
    var结果=来自infos中的p
    p.SubPartyName由p.PartyName分组为g
    选择new{PartyName=g.Key,SubPartyNames=g.ToList().Distinct()};
    List newList=新列表();
    整数计数=0;
    foreach(结果中的var项目)
    {
    添加(newnewInfoClass())
    {
    PartyName=item.PartyName,
    });
    newList[count]。SubPartyName=newList();
    foreach(项目子PartyNames中的var项目2)
    {
    if(item2!=null)
    {
    newList[count].SubPartyName.Add(item2);
    }
    }
    计数++;
    }
    返回视图(newList);
    }
    
    看法

    @型号列表
    
      @foreach(模型中的var项目) {
    • @item.PartyName @foreach(item.SubPartyName中的var item2) {
      • @item2
      }
    • }

    您必须编辑您的
    模型
    关系查询,并包括
    分组依据
    子句。或者向我们展示您如何查询此对象。显示您的模型关系显示您的模型关系,或者DB mapis以任何方式都可以按以下方式分组`var sprp=rpparties.Concat(subparties.ToList());`?
    @model List<DemoApplication.Models.NewInfoClass>
    <ul id="list">
    @foreach (var item in Model)
    {
        <li data-group="@item.PartyName" data-expanded="true">
            @item.PartyName
            @foreach (var item2 in item.SubPartyName)
            {
                <ul>
                    <li data-group="@item2" data-expanded="true">@item2</li>
                </ul>
            }
        </li>
    }