2012-01-13 13 views

cevap

8

Tamam ama durumda linq kullanmak istemiyorum. Tablodaki satırın endeksi kontrol edin: bunun için doğru sözdizimi bulamadım :)

  foreach (DataRow row in m_dtMatrix.Rows) 
      { 
       if (m_dtMatrix.Rows.IndexOf(row) != 0) 
       { 
        ... 
       } 
      } 
+0

da dikkatli olmalısınız çünkü "ilk" satırın veri tablonuzun sıralama tanımına bağlı olduğunu düşünüyorum. Sonunda –

+0

LINQ ile gitmemeye karar verdim, bu yüzden cevabınızı kullandım. Yanıtlarınız için hepinize teşekkür ederim. – user1080533

17

LINQ senin arkadaşın:

şey gibi

DataTable dt; 
foreach (DataRow r in dt.Rows.Cast<DataRow>().Skip(1)) 
{ 
    //do something... 
} 

DataTable.Rows beri burada gereklidir Cast() çağrısı olmayan jenerik IEnumerable uygular ve LINQ uzantısı yöntemleri için kullanılabilir IEnumerable<T>

Başka bir seçeneğiniz de var:

DataTable dt; 
foreach (DataRow r in dt.AsEnumerable().Skip(1)) 
{ 
    //do something... 
} 
+0

sayesinde – user1080533

+0

oh sadece tek bir şey ... .Skip olmamalıdır (0)? – user1080533

+2

Hayır, "Skip" öğesinin, yok sayılacak öğe sayısını alması nedeniyle olmaması gerekir. – Nuffin

2

Burada cevap var hızlı ve kirli

DataTable dt; 

bool isFirst = true; 

foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/) 
{ 
    if(isFirst) { 
     isFirst = false; 
     continue; 
    } 
    //do something... 
} 
+2

Lanet Lester, şimdi bir noob gibi görünüyorum. – Matthew

İlgili konular