2010-08-18 46 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