【发布时间】:2018-09-28 09:09:18
【问题描述】:
我有 2 个独立的数据源。一个来自数据库查询,将作为 DataTable 返回,另一个来自其他地方并作为字典返回。
我想将这 2 个数据源连接在一起,并将其合并为 1 个 DataTable。所以这里是代码:
string query = @"select ID, NAME, ADDRESS, PHONE from PERSON a";
OracleCommand dbCommand = (OracleCommand)this.Database.GetSqlStringCommand(query) as OracleCommand;
DataTable dtPerson = this.Database.ExecuteDataSet(dbCommand).Tables[0];
Dictionary<string, DTMember> member = GetMember();
// Join the 2 results
var result = (from a in dtPerson.AsEnumerable()
join b in member on a.Field<string>("ID") equals b.Key into b1
from b in b1.DefaultIfEmpty()
select new
{
a,
MEMBER_TYPE = b.Value == null ? string.Empty : b.Value.MemberType
});
return result.ToDataTable();
问题是,由于我在select new 子句中写为a,它将返回dtPerson 中的所有字段作为DataRow 对象而不是所有字段名称(ID、NAME、ADDRESS , 电话)。这样result 中的每一行将包含 2 个成员,一个是 DataRow,另一个是 string。
我可以写一种方式来返回dtPerson中的所有列而不一一指定吗?
【问题讨论】:
-
简答:否(没有反射和辅助方法)