C# linq按列名称列表选择一个新的
我有一个从DB获得的数据表,C# linq按列名称列表选择一个新的,c#,sql,linq,C#,Sql,Linq,我有一个从DB获得的数据表, 我想通过linq检索数据 数据库中的我的数据表 +-----------------+-----------------+-----------------+ | column_1 | column_2 | column_3 | +-----------------+-----------------+-----------------+ | data_column_1_1 | data_column_2_1 | data_
我想通过linq检索数据 数据库中的我的数据表
+-----------------+-----------------+-----------------+
| column_1 | column_2 | column_3 |
+-----------------+-----------------+-----------------+
| data_column_1_1 | data_column_2_1 | data_column_3_1 |
| data_column_1_2 | data_column_2_2 | data_column_3_2 |
| data_column_1_3 | data_column_2_3 | data_column_3_3 |
| data_column_1_4 | data_column_2_4 | data_column_3_4 |
+-----------------+-----------------+-----------------+
我不知道表中的列数但是我是否得到了另一个包含所有列名称的表 列名
+----------------+
| column's names |
+----------------+
| column_1 |
| column_2 |
| column_3 |
+----------------+
我该怎么做?
我希望它看起来像这样
var list=DataTableFromDB.aseneumerable()。选择(x=>new
{
第1行=x.字段(“第1行”),
第2行=x.字段(“第2行”),
});
但在动态上,,
可以帮助我吗?使用and Add()方法(带cast to)向扩展对象添加动态属性
代码:
var list=DataTableFromDB.AsEnumerable()。选择(x=>
{
var sampleObject=new ExpandoObject();
foreach(列名称中的变量列)
{
((IDictionary)sampleObject)
.添加(列,x.字段(列));
}
返回样本对象;
});
try我想像数据成员一样获取它,而不是像dictionary(key,value)@lealam一样,如果您将sampleObject声明为动态,则可以动态访问该成员。那你想怎么做?
var list = DataTableFromDB.AsEnumerable (). Select (x => new
{
row1 = x.Field <string> ("row1"),
row2 = x.Field <string> ("row2"),
});
var list = DataTableFromDB.AsEnumerable().Select(x =>
{
var sampleObject = new ExpandoObject();
foreach (var col in columnsNames)
{
((IDictionary<String, Object>)sampleObject)
.Add(col, x.Field<string>(col));
}
return sampleObject;
});