Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从EnumerablerRowCollectionLINQ结果中获取“列标题”_C#_.net_Linq_Datatable_Ienumerable - Fatal编程技术网

C# 从EnumerablerRowCollectionLINQ结果中获取“列标题”

C# 从EnumerablerRowCollectionLINQ结果中获取“列标题”,c#,.net,linq,datatable,ienumerable,C#,.net,Linq,Datatable,Ienumerable,希望这是相对简单的。在对一个数据表执行LINQ查询之后,我想将结果放入另一个我计划动态创建的数据表中。我需要的是在LINQ查询集合中查找第th列标题的名称 编辑:LINQ查询 var results= from a in dt.AsEnumerable() where a.Field<int>("ID") == i select new {

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

编辑: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


真希望这有道理

快速上篮可能不是最好的,但这是仓促完成的-非常仓促!!:

    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

希望这是有意义的

因为快速提升可能不是最好的,但这是匆忙完成的-非常匆忙!!:

    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

希望这有意义

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

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

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

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

您只需要从数据表返回列名列表?不,从我的LINQ查询结果返回。您的LINQ查询是什么?请显示您只需要从数据表返回列名列表?不需要从我的LINQ查询结果返回。您的LINQ查询是什么?Show plesedes这不只是返回DataTable列标题,而不是查询列标题吗?CopyToDataTable方法不起作用。我似乎记得这与它是否可枚举有关,或者其他什么!只需查看您的查询,因为它是一个匿名类型@sll已提供以下正确答案!这不只是返回DataTable列标题,而不是查询列标题吗?CopyToDataTable方法不起作用。我似乎记得这与它是否可枚举有关,或者其他什么!只需查看您的查询,因为它是一个匿名类型@sll已提供以下正确答案!不要忘记添加if结果!=null和结果。计数>0如果结果为,请不要忘记添加!=null和结果。计数>0