2014-01-30 72 views
0

我有一个类,它代表了一个人,有一些信息结构化信息

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() 
    { 

    } 
} 

我需要这个类acording其国集团的对象,​​所以我将不得不从西班牙PPL的列表,另一个列表来自意大利的ppl。 有那些我需要在Windows手机应用程序显示这些名单后:

国家
人1
人2

国家
人3
人4

会是什么做到这一点的最佳方式?

回答

0

您将需要通过人员名单进行迭代,然后由国名accrodingly责令..

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); 
} 
} 
+0

它抱怨说,它不包含含义/值/添加 当我做国家。 intellsense只显示几个方法像ToString,我错过了一个使用? – Ric

+0

我只是写了算法而不是代码..你需要自己消除错误。这些只是语法错误或可能是拼写错误。我做了一些编辑。 – Zeeshan

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项目。

+0

我有一个名单人,但我不能做persons.GroupBy或persons.OrderByBy:\ – Ric

+0

请确保你的文件中有'使用System.Linq',并确保你在引用'System。 Core.dll“在你的引用中。 – Sean

+0

我如何将分组信息传递给XAML?所以我可以像我在我的官方问题中提到的那样展示它。 – Ric