New to Linq, so apologies if this is basic. This query is throwing up the error {"Cannot cast DBNull.Value to type 'System.Int64'. Please use a nullable type."} when I enumerate the results.
private void AddLevels(long rootid)
{
var results = from row in data.AsEnumerable()
where row.Field<long>("ParentID") == rootid
select row;
foreach (DataRow row in results)
{
//do stuff
}
}
The column ParentID does accept nulls - do I need to handle these separately?
EDIT2: Actual solution below that still uses Linq.
EDIT: I solved this by scrapping Linq and just using a DataTable.Select statement instead. If anyone's got input on the performance difference I'd be interested.
long rootid is nullable type? It should be then only it can accept nulls
Use this line in your query:
decimal?
is syntactic sugar forSystem.Nullable<decimal>
, which is essentially the same asdecimal
, except that it also allows fornull
values.long
is a different type altogether -- it can only represent integers and not decimal values, hence the "Specified cast is not valid" error.