C# 从EnumerablerRowCollectionLINQ结果中获取“列标题”
希望这是相对简单的。在对一个数据表执行LINQ查询之后,我想将结果放入另一个我计划动态创建的数据表中。我需要的是在LINQ查询集合中查找第th列标题的名称 编辑:LINQ查询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 {
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