2010-08-18 23 views
1

我使用以下VB.NET代碼來按列計數對Data.DataTable進行排序。使用Data.DataTableCollection進行LINQ轉換

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 

有沒有一種方法,以表明x是無需在LINQ查詢引用它(在這種情況下兩次)每次DirectCast它Data.DataTable?

回答

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

這就是絕招!非常感謝你。 – 2010-08-18 19:37:28

+1

不客氣 - 高興地幫助:) – 2010-08-18 19:37:53