2011-05-31 146 views
0

據範圍我有一個包含以下數據作爲過濾數據使用LINQ

SrNo Roll Name 
1 1  XYZ 
99 45 ABC 
150 120 POQ 
10 9  RTY 
190 180 MNZ 

一個數據表按照輸出應該被導出&應該有一個附加列操作結果的srNo的範圍應該被添加&根據該結果應填充0或1(如果範圍是0-100之間,然後導致應該是0,如果範圍是100-200之間然後結果應該是1)

的範圍因此,輸出將是

SrNo Roll Name Result 
1  1  XYZ 0 
99 45 ABC 0 
10 9  RTY 0 

150 120 POQ 1 

190 180 MNZ 1 

我想通過linq實施

請提出任何建議!!!

感謝

+0

任何機會,你可以讓你在找什麼更清晰? – soandos 2011-05-31 06:12:59

+0

其實這是我無法解決的問題的一部分,所以我現在已經發布完整的問題 – usr021986 2011-05-31 06:13:11

+0

這似乎是一個家庭作業問題。 – tofutim 2011-05-31 06:19:31

回答

1
SrNo Roll Name Result 
1  1  XYZ  0 
99  45  ABC  0 
10  9  RTY  0 
150  120  POQ  1 
190  180  MNZ  1 

試試這個:

var dt = new DataTable(); 
dt.Columns.Add(new DataColumn("SrNo", typeof (int))); 
dt.Columns.Add(new DataColumn("Roll", typeof (int))); 
dt.Columns.Add(new DataColumn("Name", typeof (string))); 

dt.Rows.Add(1, 1, "XYZ"); 
dt.Rows.Add(99, 45, "ABC"); 
dt.Rows.Add(150, 120, "POQ"); 
dt.Rows.Add(10, 9, "RTY"); 
dt.Rows.Add(190, 180, "MNZ"); 

var result = from r in dt.AsEnumerable() 
      orderby (r.Field<int>("Roll") >= 100) ascending 
      select new 
         { 
          SrNo = r.Field<int>("SrNo"), 
          Roll = r.Field<int>("Roll"), 
          Name = r.Field<string>("Name"), 
          Result = Convert.ToInt32(Math.Floor(r.Field<int>("Roll")/100.0)) 
         };   

Console.WriteLine(
     "{0}\t{1}\t{2}\t{3}", 
     "SrNo", 
     "Roll", 
     "Name", 
     "Result"); 

foreach (var row in result) 
{ 
    Console.WriteLine(
     "{0}\t{1}\t{2}\t{3}", 
     row.SrNo, 
     row.Roll, 
     row.Name, 
     row.Result); 
} 
+0

我想通過SrNo的範圍獲取rersult並且還希望範圍爲 – usr021986 2011-05-31 06:28:35

+0

的數據感謝它爲我工作 – usr021986 2011-05-31 06:47:45