2010-05-21 4 views
0

Я хочу перечислить запрос Linq. Ниже я указал пример.Итерация запроса DataTable linq

EX:

DataTable _slidingDataTable = new DataTable("test"); 

for(int i=0; i<5;i++) 
{ 
    DataRow row = _slidingDataTable.NewRow(); 

    startPosition = DateTime.Now; 
    for(int i=0; i<5;i++) 
    { 
     _slidingDataTable.Columns.Add("TransferTime"); 
     row[columnName] = startPosition ; 
     _slidingDataTable.Columns.Add("TransferData"); 
     row[columnName] = "Test"+i; 
    } 

_slidingDataTable.Rows.Add(row); 
} 


var query1 = from myRow in _slidingDataTable.AsEnumerable() 
         where myRow.Field<DateTime>("TransferTime") == startPosition 
         select myRow; 

Этот выходной запрос должен быть набор строк. Как получить сбор строки & итерации.

ответ

1

В вашем контексте Query1 является EnumerableRowCollection<DataRow>, потому что вы использовали _slidingDataTable.AsEnumerable(), и вы можете перемещаться по нему так:

foreach (DataRow row in query1) 
{ 
    // Do stuff with that row 
} 
0

Я даю вам пример, с помощью которого вы можете увидеть его, и он также включает в себя сумма в группе.

var drdatedisp = from row in dtfullreport.AsEnumerable() 
          group row by row.Field<string>("Order_Date") into g 
          select new 
          { 
           Order_Date = g.Key, 
           totalQnty = g.Sum(a => a.Field<int>("Item_Quantity")), 
           totalTax = g.Sum(a => float.Parse(a.Field<decimal>("TAXAMT").ToString())), 
           totalAmt = g.Sum(a => float.Parse(a.Field<decimal>("VALAMT").ToString())) 
          }; 
      DataTable dtdatedisp = new DataTable(); 
      dtdatedisp.Columns.Add("Order_Date"); 
      dtdatedisp.Columns.Add("Item_Quantity"); 
      dtdatedisp.Columns.Add("TAXAMT"); 
      dtdatedisp.Columns.Add("VALAMT"); 
      dtdatedisp.Rows.Clear(); 
      foreach (var g in drdatedisp) 
      { 
       DataRow newRow1 = dtdatedisp.NewRow(); 
       newRow1[0] = g.Order_Date; 
       newRow1[1] = g.totalQnty; 
       newRow1[2] = String.Format("{0:0.00}", g.totalTax); 
       newRow1[3] = String.Format("{0:0.00}", g.totalAmt); 
       dtdatedisp.Rows.Add(newRow1); 
      } 
Смежные вопросы