cs
using System;
using System.Data;
using System.Linq;
class Program
{
static void Main()
{
// 创建一个示例的 DataTable 对象
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Rows.Add(1, "John");
table.Rows.Add(2, "Jane");
table.Rows.Add(3, "Bob");
table.Rows.Add(4, "Alice");
// 要查找的数据
int targetID = 3;
// 使用 LINQ 查询获取数据所在的行号
var rows = table.AsEnumerable()
.Select((row, index) => new { Row = row, Index = index })
.Where(x => x.Row.Field<int>("ID") == targetID)
.ToList();
if (rows.Count > 0)
{
int rowIndex = rows[0].Index;
Console.WriteLine("数据所在的行号为: " + rowIndex);
}
else
{
Console.WriteLine("未找到匹配的数据");
}
}
}
这段代码使用 LINQ 查询语句来获取表格中指定数据所在的行号:
-
table.AsEnumerable()
: 这将将DataTable
对象转换为可枚举的集合,以便能够在 LINQ 查询中使用。 -
.Select((row, index) => new { Row = row, Index = index })
: 这一部分使用Select
方法来创建一个新的匿名对象,其中包含每一行的数据以及行号。row
是每一行的数据,index
是行号。 -
.Where(x => x.Row.Field<int>("ID") == targetID)
: 这一部分使用Where
方法来筛选出符合条件的行,其中条件是行的 "ID" 列的值等于目标 ID 值targetID
。 -
.ToList()
: 最后,使用ToList
方法将查询结果转换为列表,以便我们可以进一步处理。 综上所述,这段代码的作用是在表格中查找满足指定条件的行,并将这些行的数据以及对应的行号存储在一个列表中。
cs
using System;
using System.Data;
using System.Linq;
class Program
{
static void Main()
{
// 创建一个示例的 DataTable 对象
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Rows.Add(2, "Jane");
table.Rows.Add(4, "Alice");
table.Rows.Add(1, "John");
table.Rows.Add(3, "Bob");
// 按照 "ID" 列的值进行升序排序
var sortedRows = table.AsEnumerable()
.OrderBy(row => row.Field<int>("ID"))
.ToList();
// 输出排序后的结果
foreach (DataRow row in sortedRows)
{
Console.WriteLine(row["ID"] + "\t" + row["Name"]);
}
}
}
这段代码使用 LINQ 查询语句对 DataTable 中的数据进行排序:
-
table.AsEnumerable()
: 这将将DataTable
对象转换为可枚举的集合,以便能够在 LINQ 查询中使用。 -
.OrderBy(row => row.Field<int>("ID"))
: 这一部分使用OrderBy
方法对可枚举集合中的元素进行排序。row => row.Field<int>("ID")
是一个 lambda 表达式,它指定了排序的规则。在这个示例中,我们按照每一行的 "ID" 列的值进行排序。 -
.ToList()
: 最后,使用ToList
方法将排序后的结果转换为列表,以便我们可以进一步处理或输出。
综上所述,这段代码的作用是对 DataTable 中的数据按照指定列进行升序排序,并将排序结果存储在一个列表中。你可以根据需要对其他列进行排序,或者进一步处理排序后的结果,比如输出到控制台或存储到其他数据结构中。在示例中,我们将排序后的结果存储在 sortedRows
列表中。