2014-01-30 2 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 из Италии. После того, как эти списки мне нужно, чтобы отобразить их на Windows Phone приложение:

Страна
Person 1
Person 2

Страна
Person 3
Person 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

У меня есть список человек, но я не могу делать person.GroupBy или people.OrderByBy: \ – Ric

+0

Убедитесь, что у вас есть 'using System.Linq' в вашем файле и убедитесь, что вы ссылаетесь на' System. Core.dll' в ваших ссылках. – Sean

+0

Как передать сгруппированную информацию в XAML? поэтому я мог бы отобразить его, как я упомянул в своем официальном вопросе. – Ric

Смежные вопросы