0

我正在使用以下查询从内存中的数据表中提取一行。

Dim results = _
   From myRow In exceldt.AsEnumerable() _
   Where myRow.Field(Of String)("Serial Number") = Row.Item("Serial Number") _
   Select myRow

resultrow = results.CopyToDataTable.Rows(0)

当它是 exceldt 的一部分时,我需要获取结果行的索引。我似乎在这方面找不到任何东西。建议?

4

2 回答 2

2

我不在 VB.net 中工作,所以请原谅我的代码,但您可以通过以下方式获得投影的索引:

Dim result = exceldt.AsEnumerable() .Select (Function(item, index) _
  New With { .Index = index, .SerialNumber = item }).ToList 

我无法在 VB 中提供更多信息,但这个快速示例确实可以作为控制台应用程序使用。您可以看到选择/投影如何捕获索引和项目。在过滤(在哪里)您的初始枚举之前,您需要合并类似的逻辑。

Dim names = {"Andy", "Tom", "Fred", "Sally"}

Dim results = names _
    .Select(Function(item, index) New With {.Index = index, .Name = item}) _
    .OrderBy(Function(item) item.Name)

For Each item In results
    Console.WriteLine("{0} - {1}", item.Index, item.Name)
Next

结果

0 - Andy
2 - Fred
3 - Sally
1 - Tom
于 2013-01-15T21:24:01.460 回答
1

这应该可以解决问题

int index = exceldt.Rows.IndexOf(results);
于 2013-01-15T21:17:36.863 回答