C# 按表格中的某列排序/查询

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 查询语句来获取表格中指定数据所在的行号:

  1. table.AsEnumerable() : 这将将 DataTable 对象转换为可枚举的集合,以便能够在 LINQ 查询中使用。

  2. .Select((row, index) => new { Row = row, Index = index }): 这一部分使用 Select 方法来创建一个新的匿名对象,其中包含每一行的数据以及行号。row 是每一行的数据,index 是行号。

  3. .Where(x => x.Row.Field<int>("ID") == targetID): 这一部分使用 Where 方法来筛选出符合条件的行,其中条件是行的 "ID" 列的值等于目标 ID 值 targetID

  4. .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 中的数据进行排序:

  1. table.AsEnumerable(): 这将将 DataTable 对象转换为可枚举的集合,以便能够在 LINQ 查询中使用。

  2. .OrderBy(row => row.Field<int>("ID")): 这一部分使用 OrderBy 方法对可枚举集合中的元素进行排序。row => row.Field<int>("ID") 是一个 lambda 表达式,它指定了排序的规则。在这个示例中,我们按照每一行的 "ID" 列的值进行排序。

  3. .ToList(): 最后,使用 ToList 方法将排序后的结果转换为列表,以便我们可以进一步处理或输出。

综上所述,这段代码的作用是对 DataTable 中的数据按照指定列进行升序排序,并将排序结果存储在一个列表中。你可以根据需要对其他列进行排序,或者进一步处理排序后的结果,比如输出到控制台或存储到其他数据结构中。在示例中,我们将排序后的结果存储在 sortedRows 列表中。

相关推荐
ZJU_统一阿萨姆39 分钟前
【算子开发】环境搭建与第一个CUDA程序
开发语言·人工智能·系统架构
Evand J1 小时前
【MATLAB例程,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。附MATLAB完整代码的下载链接
开发语言·matlab·车联网·调度·mpc·节能·车辆控制
ttwuai1 小时前
Go 后台接入 SSO 后菜单正常但接口 403,怎么排查权限链路?
开发语言·后端·golang
Canmag 兴隆磁性1 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
公子小六1 小时前
基于.NET的Windows窗体编程之WinForms音频控件
windows·microsoft·c#·.net·音视频·winforms
benchmark_cc2 小时前
批量获取量化数据时,如何设置合理的超时和重试机制?——QuantDash 高性能实战指南
开发语言·人工智能·python·pandas·量化·quantdash
2601_966949652 小时前
使用 Pandas 读取批量数据时如何避免内存溢出?QuantDash 量化数据工程师避坑指南
开发语言·python·pandas·tushare·akshare·quantdash
郑州光合科技余经理2 小时前
海外版多语言团购系统架构:主数据互通与核销边界
java·开发语言·前端·后端·系统架构·php·ai编程
ttwuai2 小时前
Go 后台图片上传到对象存储后,预览 403/404 怎么排查?
开发语言·golang
绿浪19842 小时前
c# 结构体 能不能直接封送检测
开发语言·c#