2010-05-30 4 views
-1

мне нужно группировать данные списка в C#как группировать данные в списке

пример: у меня есть данные, как это в список C#

У меня есть класс с именем information.cs с эти свойства, название школы, родительский

бывшие данные

name school parent 

kumar  fes   All 

manju  fes   kumar 

anu   frank  kumar 

anitha  jss   All 

rohit  frank  manju 

anill  vijaya  manju 

vani   jss   kumar 

soumya jss   kumar 

madhu  jss   rohit 

shiva  jss   rohit 

vanitha  jss   anitha 
anu  jss   anitha 

Теперь, принимая это как я nput Мне хотелось, чтобы выход был сформирован с Иерархическими данными , когда родительский номер все означает, что это самый верхний уровень kumar fes Все. что мне нужно сделать здесь, мне нужно создать объект [0], а затем проверить список, существует ли kumar как родительский элемент в списке, если он существует, а затем добавить эти элементы под объект [0] в качестве родителя

i need to create one more oject under 
**manju  fes   kumar 

anu   frank  kumar** 

то, что я хотел сделать здесь итерацию по списку, а затем проверить уровень родительского основанный на

название школы родительского

kumar  fes   All -->obj[0] 

manju  fes   kumar -->obj1[0] 

anu   frank  kumar -->obj1[1] 

для obj1 -> OBJ [0] будет родительским как это мне нужно разбить список или класс наблюдения

anitha  jss   All-->obj[1] 
    vanitha  jss   anitha -->obj1[0] 
     anu  jss   vanitha -->obj2[0] 

здесь obj2 [0] -> obj1 [0] -> OBJ [1] будет вышестоящий

как это мне нужно, чтобы создать список или observationclass надеюсь, что мой вопрос ясно, что я прошу вас, люди. Я хотел знать, как я могу создать класс наблюдения. любая помощь была бы действительно замечательной.

надеюсь, что мой вопрос ясен

+0

Какая версия C# /. NET? –

+0

Ваш вопрос не очень ясен. «вот так мне нужно создать список или класс наблюдения» - вам нужно создать список чего? Детей? Что такое класс наблюдения? – strager

+0

Вы даже не можете выровнять столбцы в ваших больших списках? – mquander

ответ

1
// Load data. 
string[][] data = new string[][] { 
    new string[] { "kumar", "fes", "All" }, 
    // etc. 
}; 

ICollection<Information> infoData = data.Select(new Information(data)); // or however you load data. 

// Find children of each node. 
foreach(var info in infoData) { 
    info.Children = infoData.Where(other => other.Name == info.Parent).ToList(); 
} 

var rootChildren = infoData.Where(other => other.Name == "All"); 
+0

спасибо за переигровку незнакомца мне нужно создать список класс Person { public string Имя {get; задавать; } public string School {get; задавать; } public string Parent {get; задавать; } public List Дети {get; задавать; } } – happysmile

+0

вот так мне нужно создать список – happysmile

+0

@ prince23, список чего? – strager

0

Вот то, что может работать для Вас, основываясь на том, конкретный класс, как этот

class Person 
{ 
    public string Name { get; set; } 
    public string School { get; set; } 
    public string Parent { get; set; } 
    public List<Person> Children { get; set; } 
} 

нагрузки людей в список, а затем перебрать ней найти детей любого данного человека.

foreach (Person person in people) 
{ 
    person.Children = people.Where(p => p.Parent == person.Name).ToList(); 
} 

После этого вы можете работать с вашими «основными» родителями.

var parents = people.Where(p => p.Parent == "All"); // .ToList() if you need a concrete list 
+0

спасибо за Энтони Пеграма, я получаю вывод в консольном приложении. Мне нужно сохранить вывод в списке коллекции как cann я сделаю это любая помощь будет замечательной – happysmile

+0

@ prince23 - Это была демонстрация. В моем коде «родители» будут содержать нужные вам данные. Если вам нужен конкретный список, назовите '.ToList()' на нем. Помимо этого, счастливое кодирование. –

+0

Рекурсия не требуется, так как вам нужно передать все элементы ровно один раз, заказ не имеет значения, и вам не нужна дополнительная иерархическая информация. Простая итерация будет работать более эффективно. – strager

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