打印到控制台的对象列表

时间:2016-07-30 17:46:07

标签: c# .net

我创建了一个Listobj对象类型的列表。并为对象添加了一组值。

如何以不断增长的年龄方式从新列表中打印Listobj对象。

class Listobj
{
    int age;
    string name;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    static List<Listobj> newlist = new List<Listobj>();
    static void Main(string[] args)
    {
        /*newlist.Add(10);
        newlist.Add(2);
        newlist.Add(6);
        newlist.Sort();
        newlist.ForEach(Console.WriteLine);
        Console.ReadLine();*/
        Listobj obj = new Listobj();
        int tempage = 23;
        string tempname = "deepak";
        obj.Age = tempage;
        obj.Name = tempname;
        Listobj.newlist.Add(obj);
        foreach (Listobj item in newlist)
            Console.WriteLine(item);
        Console.ReadLine();
    }
}

3 个答案:

答案 0 :(得分:4)

我会覆盖ToString课程中的Listobj

public class Listobj
{
    private int age;
    private string name;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public override string ToString()
    {
        return "Person: " + Name + " " + Age;
    }
}

然后你可以像这样打印:

foreach (var item in newlist.OrderBy(person => person.Age)) Console.WriteLine(item);

答案 1 :(得分:1)

您可以使用Linq订购列表:

foreach (Listobj item in newlist.OrderBy(x => x.Age))
    Console.WriteLine(item);

此外,还有一些改进:

给出了:

public class Listobj
{
    public int Age { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        return string.Format("My name is {0} and I'm {1} years old.", Name, Age;
    }
}

答案 2 :(得分:0)

你可以使用IEnumerable变量,然后使用linq按升序对它们进行排序

IEnumerable<Listobj> temp = newlist;
temp = from v in temp
       orderby v.age ascending
       select v;

foreach (Listobj item in temp)
{
    Console.WriteLine(item.Name +"with the age"+ item.Age);
}

Console.ReadLine();