1

我有以下 VB.NET 代码,用于按列数对 Data.DataTable 进行排序。

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 是一个 Data.DataTable 而不必在 LINQ 查询中每次引用它(在这种情况下是两次)时都直接转换它?

4

1 回答 1

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
于 2010-08-18T19:32:32.640 回答