我有一个已从XML文件反序列化的列表。
XmlRootAttribute Root = new XmlRootAttribute();
Root.ElementName = "PersonList";
List<Person> persons;
using (var reader = new StreamReader("Test.xml"))
{
XmlSerializer deserializer = new
XmlSerializer(typeof(List<Person>),Root);
persons = (List<Person>)deserializer.Deserialize(reader);
}
我的XML文件
<PersonList>
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ID>4</ID>
<Name>dasdas</Name>
<Address>asdasd</Address>
<Number>40</Number>
</Person>
</PersonList>
我希望按每个ID分组,因此如果ID =&#39; 4&#39;则获取所有结果然后将其添加到PersonsID4列表中 或者如果ID =&#39; 5&#39;添加到PersonsID5列表
var test = persons.GroupBy(u => u.ID).Select(p => p.ToList()).ToList();
personslist4 = test;
如果有问题,请直接提问。
答案 0 :(得分:1)
GroupBy
之后要做的一件事是构建一个将ID映射到项目列表的Dictionary
:
var test = persons
.GroupBy(u => u.ID)
.ToDictionary(g => g.Key, g => g.ToList());
这使您可以选择具有特定ID的用户列表,并使用相应的用户列表迭代所有ID:
foreach (var p in test) {
var id = p.Key;
var list = p.Value;
Console.WriteLine("ID={0}: {1} persons", id, list.Count);
}