2016-07-30 83 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();