我有一个代表一个人的课程,有一些信息
public class Agente
{
public string title { get; set; }
public string address { get; set; }
public string name { get; set; }
public string email { get; set; }
public string phone { get; set; }
public string fax { get; set; }
public string website { get; set; }
public string id { get; set; }
public string continent { get; set; }
public string country { get; set; }
public Agente()
{
}
}
我需要根据其国家对这个类的对象进行分组,所以我将有一个来自西班牙的ppl列表,另一个来自意大利的ppl列表。 拥有这些列表后,我需要在Windows手机应用程序上显示它们:
国家
人1
人2
国家
人3
人4
最好的方法是什么?
答案 0 :(得分:0)
您需要遍历人员列表,然后按国家名称对其进行相应的订购..
List persons..
HashTable<List<Person>> countries=new HashTable();
foreach(person in persons){
if(countries.contains(person.country)){
countries.value.add(person);
}
else{
List<Person> per = new list();
per.add(person);
countries.add(person.country,per);
}
}
答案 1 :(得分:0)
假设你已经按照某种顺序得到它们:
列出项目= ....
var byCountry = items.GroupBy( agente => agente.country);
或按国家/地区订购,然后按ID:
var byCountry = items.OrderByBy(agente => agente.country).ThenBy(agente => agente.id);
要在WPF中呈现此内容,您需要某种集合。我假设您正在使用ObservableCollection,因此在查看模型时请确保您拥有适当的属性,例如:
public ObservableCollection<Agente> Agents{get; private set;}
并将其初始化为:
var byCountry = items.OrderByBy(agente => agente.country).ThenBy(agente => agente.id);
this.Agents = new ObservableCollection<Agente>(byCountry);
现在,在您的WPF中声明您的ItemControl
绑定到此集合:
<ItemsControl x:Name="Agents" ItemsSource="{Binding Agents}>
注意:这假设您已将视图模型绑定到包含ItemsControl
的项目。