gpt4 book ai didi

c# - 从特定列获取数据表中的行索引

转载 作者:可可西里 更新时间:2023-11-01 03:09:07 25 4
gpt4 key购买 nike

| 1 | 2 | 3 |
+------------+
| A | B | C |
| D | E | F |
| G | H | I |

System.Data.DataTable dt = new DataTable();

dt.Columns.Add("1");
dt.Columns.Add("2");
dt.Columns.Add("3");
dt.Rows.Add(new object[] { "A", "B", "C" });
dt.Rows.Add(new object[] { "D", "E", "F" });
dt.Rows.Add(new object[] { "G", "H", "I" });

int? index = null;

var rows = new System.Data.DataView(dt).ToTable(false, new[] {"1"}).Rows;

for (var i = 0; i < rows.Count; i++)
{
if (rows[i].ItemArray.FirstOrDefault() as string == "A")
index = i;
}

有什么方法可以简化这段获取特定行的索引的代码,并提供一个列?在这种情况下,索引将为 0,因为我正在遍历第一列直到找到“A”。感觉应该有一个 linq 解决方案,但我想不通。

最佳答案

如果您使用 DataTableExtensions.AsEnumerable()方法,您将能够使用 LINQ 查询您的 DataTable。然后您可以使用 List<T>.FindIndex 确定给定谓词的索引:

int? index = new System.Data.DataView(dt).ToTable(false, new[] { "1" })
.AsEnumerable()
.Select(row => row.Field<string>("1")) // ie. project the col(s) needed
.ToList()
.FindIndex(col => col == "G"); // returns 2

关于c# - 从特定列获取数据表中的行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com