如何(正确)获取 DataRowView 的索引?

问题描述 投票:0回答:1

我正在使用此方法获取 DataRowView 的索引:

public static int GetIndex(this DataRowView rowView)
{
    for (int i = 0; i < rowView.DataView.Count; i++)
    {
        if (rowView.DataView[i] == rowView)
            return i;
    }

    return -1;
}

现在我有一个用例,其中包含返回 -1 的常规给定 RowView。

rowView.DataView
包含完全相同的 rowView,但
rowView.DataView[i] == rowView
仍然返回 false。

那么为什么会出现这种比较返回错误结果的情况,这些情况是什么?

我怎样才能防止这种情况并正确获取 DataRowView 的索引?

c# dataview
1个回答
0
投票

您可以从 DataRowView 的

.Row
属性获取行索引。

using System.Data;
using System.Reflection;

. . .

public static class Extensions
{
    public static int RowId(this DataRow row)
    {
        FieldInfo fieldInfo = row.GetType().GetField("_rowID",
            BindingFlags.NonPublic | BindingFlags.Instance);
        return Convert.ToInt32(fieldInfo!.GetValue(row));
    }
}

例如,

table
是一个数据表。

DataView view = table.DefaultView;
foreach (DataRowView rowView in view)
{
    Debug.WriteLine($"{rowView.Row.RowId()}");
}
© www.soinside.com 2019 - 2024. All rights reserved.