Requête LINQ sur un DataTable

Requête LINQ sur un DataTable

Vous ne pouvez pas interroger la collection Rows du DataTable, car DataRowCollection n’implémente pas IEnumerable<T>. Vous devez utiliser l’extension AsEnumerable() pour DataTable. Comme ceci :

var results = from myRow in myDataTable.AsEnumerable()
where myRow.Field<int>("RowNo") == 1
select myRow;

Et comme le dit @Keith, vous devrez ajouter une référence à System.Data.DataSetExtensions

AsEnumerable() retourne IEnumerable<DataRow>. Si vous devez convertir IEnumerable<DataRow> en DataTable, utilisez l’extension CopyToDataTable().

Ci-dessous, la requête avec une expression Lambda :

var result = myDataTable
    .AsEnumerable()
    .Where(myRow => myRow.Field<int>("RowNo") == 1);