2010-08-18 2 views
1

У меня есть следующий код VB.NET, который я использую для сортировки Data.DataTable по количеству столбцов.LINQ casting с Data.DataTableCollection

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 

Есть ли способ, чтобы указать, что х является Data.DataTable без DirectCast его каждый раз, когда он ссылается (дважды в данном случае) в запросе LINQ?

ответ

3

Что-то вроде:

Target.Tables.Cast<Data.DataTable>() 

, а затем сделать запрос об этом. И вы должны правильно реорганизовать код на несколько строк, чтобы сделать его более читаемым.

(это C# - но я буду переводить, 2 сек)

Перевод:

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 
+0

Это трюк! Большое спасибо. –

+1

Добро пожаловать - с удовольствием помогите :) –