LINQ query on a DataTable
.net, .net-3.5, c#, datatable, linq
Solution
You can't query against the `DataTable`'s Rows collection, since `DataRowCollection` doesn't implement `IEnumerable<T>`. You need to use the `AsEnumerable()` extension for `DataTable`. Like so:
var results = from myRow in myDataTable.AsEnumerable()
where myRow.Field<int>("RowNo") == 1
select myRow;
And as @Keith says, you'll need to add a reference to System.Data.DataSetExtensions
`AsEnumerable()` returns `IEnumerable<DataRow>`. If you need to convert `IEnumerable<DataRow>` to a `DataTable`, use the `CopyToDataTable()` extension.
Below is query with Lambda Expression,
var result = myDataTable
.AsEnumerable()
.Where(myRow => myRow.Field<int>("RowNo") == 1);
Problem
I'm trying to perform a LINQ query on a DataTable object and bizarrely I am finding that performing such queries on DataTables is not straightforward. For example: ``` var results = from myRow in myDataTable where results.Field("RowNo") == 1 select results; ``` This is not allowed. How do I get something like this working? I'm amazed that LINQ queries are not allowed on DataTables!