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>
}