c# - 如何查询具有动态列的数据表

标签 c# linq datatable

我需要查询包含未知列的数据表以返回列的子集。

显然,使用数据 View 很容易,但是 LINQ 呢?

我会将数据表和列名作为参数传递给执行查询的方法。

我没有 LINQ 经验,到目前为止我在 SO 上看到的情况似乎 LINQ 的唯一动态部分是 WHERE 过滤器,而不是选择了哪些列。

我错了吗?

如果可以,你能给我一份 sample 吗?

最佳答案

这是一个快速示例,说明如何使用 Linq to DataSet 选择任意两列:

public static void SelectRandomColumns(DataTable dataTable, string col1, string col2)
{
    // Select into an anonymous type here, but you could
    // select into a custom class
    var query = from row in dataTable.AsEnumerable()
                select new
                {
                    p1 = row[col1],
                    p2 = row[col2]
                };

    // Do whatever you need to do with the new collection of items
    foreach (var item in query)
    {
        Console.WriteLine("{0}: {1}, {2}: {3}", col1, item.p1, col2, item.p2);
    }           
}

如果您需要选择随机数量的列,那么这会有点棘手,但希望这会让您朝着正确的方向前进。

关于c# - 如何查询具有动态列的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260282/

相关文章:

c# - WPF:如何从网格控件的所有区域打开上下文菜单

c# - SSIS 脚本组件在手动打开之前无法加载程序集

c# - Alchemy Websocket 服务器 - 如何强制断开客户端连接?

c# - WPF 中的拖放

c# - 在具有相同值的 DataRow 上调用 SetField 会导致更改吗?

c# - 使用通用标记从 XML 中获取特定数据

linq - 有没有人用 Lambda 语法完成过 Linq 101 示例?

C# LINQ & 在部署后添加数据库

c# - 从 2 个表中选择行的所有组合

angularjs - 如何以 Angular 将数据表导出到 csv 文件中