如何在列表中对数据进行分组

时间:2010-05-30 07:23:44

标签: c#

我需要在c#

中对列表的数据进行分组

例如:我在列表c#

中有这样的数据

我有一个名为information.cs的类,其中包含这些属性名称,school,parent

前数据

 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

现在将此作为输入我希望使用分层数据格式化输出  当父母全部表示它是最高级别       kumar fes全部。  我需要做的是我需要创建一个对象[0],然后在列表中检查kumar是否存在作为列表中的父项(如果存在)然后将这些项目添加为对象[0]作为父项

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

anu         frank       kumar**

我想要做的是迭代列表和D然后根据

检查父级别

命名学校家长

kumar      fes         All -->obj[0]

manju      fes         kumar -->obj1[0]

anu         frank       kumar -->obj1[1]

对于obj1 - > obj [0]将是这样的父母我需要genarte列表或观察类

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

这里 obj2 [0] - > obj1 [0] - > obj [1] 将是父母

像这样我需要创建一个列表或观察类希望我的问题清楚我正在尝试问你的人。 我想知道如何创建一个观察类。 任何帮助都会非常棒。

希望我的问题很清楚

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分: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