2016-07-30 85 views
2

我使用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(); 
    } 
} 
+0

@GrantWinney是的升序顺序排序他们做。当然。感谢您的建议。 –

回答

2

我会在你的Listobj类中重写ToString

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); 
+2

小记事......由于[Console.WriteLine](http://referencesource.microsoft.com/#mscorlib/system/io/textwriter.cs,aedbc5e502007cf7)的实现方式,你不用甚至不需要在'item'上调用'ToString()'。 –

+0

@GrantWinney你是对的!感谢收获 –

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

在您的foreach中缺少结束括号。试图编辑,但需要多个字符进行编辑。 – Harpua

+0

@Harpua谢谢,纠正 –

0

您可以使用了IEnumerable varaible,然后使用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();