2016-07-30 7 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

Я бы переопределить 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); 
+2

Небольшое примечание ... из-за способа [Console.WriteLine] (http://referencesource.microsoft.com/#mscorlib/system/io/textwriter.cs,aedbc5e502007cf7) реализовано, вы надеваете 't даже нужно вызывать 'ToString()' на 'item'. –

+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 Название переменной, а затем сортировать их в порядке возрастания с использованием 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(); 
Смежные вопросы