2012-03-25 50 views
0

我創建了一個具有datetime數據類型和其他字符串的兩個屬性的類。從列表中按年份和月份的方式對名稱進行分組

public class name1 
{ 
public DateTime dob { get; set; } 
public string name { get; set; } 
} 

,然後頁面加載創建的列表

DateTime d1 = new DateTime(1989, 5, 12); 
    DateTime d2 = new DateTime(1989, 5, 26); 
    DateTime d3 = new DateTime(1989, 3, 12); 
    DateTime d4 = new DateTime(1986, 3, 21); 
    DateTime d5 = new DateTime(1990, 8, 19); 

    List<name1> randmoptn=new List<name1>(); 
    name1 n1=new name1(); 
    n1.name="rachit"; 
    n1.dob=d1; 
    name1 n2=new name1(); 
    n2.name="abhinav"; 
    n2.dob=d2; 
    name1 n3=new name1(); 
    n3.name="mandeep"; 
    n3.dob=d3; 
    name1 n4=new name1(); 
    n4.name="jasmeet"; 
    n4.dob=d4; 
    name1 n5=new name1(); 
    n5.name="rajat"; 
    n5.dob=d5; 
    randmoptn.Add(n1); 
    randmoptn.Add(n2); 
    randmoptn.Add(n3); 
    randmoptn.Add(n4); 
    randmoptn.Add(n5); 

,現在我想 所需的輸出應該是

year 1986

month 3

21/3/1986 jasmeet

year 1989

month 3

12/3/1989 mandeep

month 5 12/5/1989 rachit

26/5/1989 abhinav

year 1990

month 8

19/8/1990 rajat

+0

你想在屏幕上打印輸出? – 2012-03-25 10:50:09

+3

有很多方法可以做,Linq,Tuple,Sort,寫一個NameDOBCollection類...你試過了什麼。你還需要別的嗎?你是否需要Name1類,你是否需要像Alpha命名的其他東西。對我來說太模糊了一個問題。 – 2012-03-25 10:58:45

+0

我想在沒有linq的情況下做到這一點。 – Rachit 2012-03-25 13:09:02

回答

1

如果您想要的輸出如下

  • DOB與名稱

然後做這樣的事情

foreach item in YourList 
{ 
    print item.dob.year; // this will return year in integer format 
    print item.dob.month; // this will return month in integer format 
    print item.dob; // this will return DoB as dateformat, do whatever formating you want 
    print item.name; // this will return Name as String 
} 

打印在同一直線上的DOB和姓名,如果你想

+0

感謝您的幫助。我完成了它。 – Rachit 2012-04-05 12:51:13

0
var q=from x in randmoptn 
      group x by new { Year=x.dob.Year,Month=x.dob.Month} into month 
      group month by month.Key.Year into year 
      select new { Year=year.Key,Months=year.OrderBy (y =>y.Key.Month)}; 

    foreach (var year in q) { 
     Console.WriteLine("year {0}",year.Year); 
     foreach (var month in year.Months) { 
      Console.WriteLine("month {0}",month.Key.Month); 
      foreach (var item in month) { 
       Console.WriteLine("{0:dd/MM/yyyy},{1}",item.dob,item.name); 
      } 

     } 
    }