获取“列标题”来自 EnumerableRowCollectionLINQ 结果

发布于 2024-12-12 07:47:31 字数 618 浏览 0 评论 0原文

希望这相对简单。在对 DataTable 执行 LINQ 查询后,我想将结果放入计划动态创建的另一个 DataTable 中。我需要的是在 LINQ 查询结果集合中查找列标题 的名称。

编辑:我基本上试图返回 LINQ 查询

var results= from a in dt.AsEnumerable()
                    where a.Field<int>("ID") == i 
                    select new 
                    {
                       ID = a.Field<int>("ID"),
                       a = a.Field<double>("A"),
                       b = a.Field<double>("B")
                    };

- “ID”、“a”和“b”。

真的希望这是有道理的!

Hopefully this is relatively simple. After I perform a LINQ query on a DataTable I want to put the results in a another DataTable which I plan to create dynamically. What I need is to find the name of th column titles in the LINQ Query reults collection.

EDIT: The LINQ Query

var results= from a in dt.AsEnumerable()
                    where a.Field<int>("ID") == i 
                    select new 
                    {
                       ID = a.Field<int>("ID"),
                       a = a.Field<double>("A"),
                       b = a.Field<double>("B")
                    };

I am basically trying to return - "ID", "a", and "b".

Really hope that makes sense!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柳絮泡泡 2024-12-19 07:47:31

由于查询结果集是一组匿名类型项,因此您不能对 DataTable 和 DataColumn/Rows 执行任何操作...但是您可以使用反射检索名称,因为每列将表示为匿名类型的公共属性:

IEnumerable<string> names = results.First()
                                   .GetType()
                                   .GetProperties()
                                   .Select(p => p.Name);

这将返回:

[0]: "ID"
[1]: "a"
[2]: "b"

Since query results set is a set of anonymous type items you can NOT do anything in terms of DataTable and DataColumn/Rows... But you can retrieve names using reflection since each column will be represented as public property of the anonymous type:

IEnumerable<string> names = results.First()
                                   .GetType()
                                   .GetProperties()
                                   .Select(p => p.Name);

This would return:

[0]: "ID"
[1]: "a"
[2]: "b"
菊凝晚露 2024-12-19 07:47:31

作为快速整理(可能不是最好的,但这是匆忙完成的 - 非常匆忙!):

    Dim _dt As New DataTable
    Dim _col1 As New DataColumn("ClientID", GetType(Integer))
    Dim _col2 As New DataColumn("ClientName", GetType(String))

    _dt.Columns.Add(_col1)
    _dt.Columns.Add(_col2)

    _dt.Rows.Add(1, "John")
    _dt.Rows.Add(2, "Shaun")

    Dim _query = From dt In _dt

    Dim _colName As New List(Of String)

    For Each _q In _query
        For Each _column In _q.Table.Columns
            _colName.Add(_column.ToString)
        Next
    Next

或者,如果您已经有一个 linq 查询,请将其转换回数据表,然后获取列:

    Dim _dt1 = _query.CopyToDataTable

    For Each _column In _dt1.Columns
        _colName.Add(_column.ToString)
    Next

希望这是有道理的

As a quick knock-up (probably not the best but this was done in a hurry - a big hurry!!):

    Dim _dt As New DataTable
    Dim _col1 As New DataColumn("ClientID", GetType(Integer))
    Dim _col2 As New DataColumn("ClientName", GetType(String))

    _dt.Columns.Add(_col1)
    _dt.Columns.Add(_col2)

    _dt.Rows.Add(1, "John")
    _dt.Rows.Add(2, "Shaun")

    Dim _query = From dt In _dt

    Dim _colName As New List(Of String)

    For Each _q In _query
        For Each _column In _q.Table.Columns
            _colName.Add(_column.ToString)
        Next
    Next

Or if you already have a linq query in place, convert it back to a data table then get the columns:

    Dim _dt1 = _query.CopyToDataTable

    For Each _column In _dt1.Columns
        _colName.Add(_column.ToString)
    Next

Hope this makes sense

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文