问题
I have the following VB.NET code that I am using to sort a Data.DataTable by column count.
For Each dtTarget As Data.DataTable In _
From x In Target.Tables _
Where DirectCast(x, Data.DataTable).Rows.Count > 0 _
Order By DirectCast(x, Data.DataTable).Columns.Count
...
Next
Is there a way to indicate that x is a Data.DataTable without having to DirectCast it each time it is referenced (twice in this case) in the LINQ query?
回答1:
Something like:
Target.Tables.Cast<Data.DataTable>()
and then make your query of that. And you should properly refactor you code into several lines to make it more readable.
(this is C# - but I will translate it, 2 sec)
Translated:
Dim query = From x In Target.Tables.Cast(Of Data.DataTable)() _
Where x.Rows.Count > 0 _
Order By x.Columns.Count _
Select x
For Each dtTarget As var In query
...
Next
来源:https://stackoverflow.com/questions/3515904/linq-casting-with-a-data-datatablecollection