我有一个Foo列表:
class Bar {
public int Id { get; set }
public List<String> NameList { get; set; }
}
我想将其转换为列表栏:
Id Name
-----------
1 Foo1
1 Foo2
1 Foo3
2 Foo3
2 Foo2
2 Foo1
Foo中的数据如下所示:
Id NameList
----------------
1 Foo1
Foo2
Foo3
2 Foo3
Foo2
Foo1
我希望它看起来像这样:
<li>1
<ul>
<li>Foo1</li>
<li>Foo2</li>
<li>Foo3</li>
</ul>
</li>
<li>2
<ul>
<li>Foo3</li>
<li>Foo2</li>
<li>Foo1</li>
</ul>
</li>
我这样做会更容易在Razor呈现的Html无序列表中显示。 此外,如果有一种简单的方法可以在没有转换的情况下执行此操作,请告诉我。
最终,我会像这样显示Html:
BarList = FooList.Select(x => new Bar() {
Id = x.Id,
NameList = x.Select(y => y.)
}).ToList();
到目前为止,我已经尝试了以下Linq代码,但它没有工作
IEnumerator VoicePrompt()
{
yield return new WaitForSeconds (20f);
FindTheCard.Play ();
currentPointSound.GetComponent<AudioSource> ().PlayDelayed (2.3f);
}
答案 0 :(得分:9)
使用GroupBy
。
List<Bar> BarList = FooList.GroupBy(f => f.Id, f => f.Name, (id, names) => new Bar
{
Id = id,
NameList = names.ToList()
}).ToList();