我的页面上有两个显示相似数据的列表,我使用for-each来显示列表。我可以在单个列表中显示
我的第一个列表
<ul>
@foreach (var item in rpInfo)
{
<li data-id="@item.ID">
@item.PartyName
<ul>
<li> @item.spName </li>
</ul>
</li>
}
我的第二个列表
<ul>
@foreach (var dRPs in deletedRpHistoryInfo)
{
<li data-id="@dRPs.ID">
@dRPs.PartyName
<ul>
<li>@dRPs.spName</li>
</ul>
</li>
}
</ul>
我需要您的帮助,将两者结合起来创建列表吗?
谢谢!
答案 0 :(得分:4)
最简单的是,您不需要两个列表,只需在一个列表中包含两个foreach语句即可。
<ul>
foreach(...){
<li>....</li>
}
foreach(...){
<li>....</li>
}
</ul>
顺便说一句,我不确定您将第二个ul嵌入li中的值是什么。
答案 1 :(得分:1)
我认为您的数据类型相似但不相同,对吗?他们是从同一个父母那里继承的?还是值得让他们从同一个父母那里继承(如果带来其他好处)。然后,您可以创建新的临时列表,并使用公共父级键入,然后在两个列表中合并。
在输入具有不同数据类型的列表时,在访问非公共数据成员时,您需要检查当前项目的类型。
课程:
abstract internal class EmergencyEmployees
{
internal string Name { get; set; }
internal int Age { get; set; }
}
internal class Police : EmergencyEmployees
{
internal int PoliceLicence { get; set; }
}
internal class Firestarter : EmergencyEmployees
{
internal int FirestarterLicence { get; set; }
}
程序:
class Program
{
static void Main(string[] args)
{
var officers = new List<Police>();
var firestarters = new List<Firestarter>();
officers.Add(new Police { Name = "Kjell", Age = 45, PoliceLicence = 12345 });
officers.Add(new Police { Name = "Linda", Age = 42, PoliceLicence = 54321 });
firestarters.Add(new Firestarter { Name = "Arne", Age = 32, FirestarterLicence = 4322 });
firestarters.Add(new Firestarter { Name = "Anna", Age = 35, FirestarterLicence = 3322 });
var templist = new List<EmergencyEmployees>();
templist.AddRange(officers);
templist.AddRange(firestarters);
foreach(var ee in templist)
{
Console.WriteLine("Name: " + ee.Name);
Console.WriteLine("Age: " + ee.Age.ToString());
if(ee is Police)
{
var p = ee as Police;
Console.WriteLine("Police Licence: " + p.PoliceLicence.ToString());
}
if (ee is Firestarter)
{
var p = ee as Firestarter;
Console.WriteLine("Firestarter Licence: " + p.FirestarterLicence.ToString());
}
Console.WriteLine("--------------------");
}
}
}
输出:
答案 2 :(得分:-1)
Here是一篇文章,显示了几种执行此操作的方法。
给出您的示例,您可以使用.Concat(),那样您就可以保持原始数据不变,并将其全部保留在foreach循环中。仅当两个列表中使用的类型相同时,这才起作用:
@foreach (var item in rpInfo.Concat(deletedRpHistoryInfo))
{
// do stuff
}