【问题标题】:How to query a datable with dynamic columns如何使用动态列查询数据表
【发布时间】:2011-03-16 11:09:08
【问题描述】:

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

显然,使用数据视图这很容易,但是 LINQ 呢?

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

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

我错了吗?

如果可以的话,你能给我一个样品吗?

【问题讨论】:

    标签: c# linq datatable


    【解决方案1】:

    以下是如何使用 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);
        }           
    }
    

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

    【讨论】:

      【解决方案2】:

      我没有使用过它,但是 .NET 3.5 / VS2008 附带的 Dynamic LINQ 库允许您使用基于字符串的选择子句。这是 Scott Guthrie 的博客的link 关于它(其中还包括下载库的链接)。

      Scott 博客中的一张图片显示了一个示例 Dynamic LINQ 表达式,它表明表达式的每个主要子句都可以是一个生成的字符串。

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        相关资源
        最近更新 更多