У меня есть 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();
Дело в том, что, поскольку я пишу как a
в предложении select new
, он вернет все поля в dtPerson
как объект DataRow
вместо всех имен полей (ID, NAME, ADDRESS, PHONE).Так что каждая строка в result
будет содержать 2 члена, один из которых будет DataRow
, а другой - string
.
Могу ли я написать способ вернуть все столбцы в dtPerson
безуказав его один за другим?