1 回答

TA贡献1858条经验 获得超8个赞
您专门为 DataRow 类型的 IEnumerable 调用,然后在其中选择一个 IEnumerable 类型 Anonymous ——您需要指定匿名类型实际上是 DataRow 对象:
IEnumerable<DataRow> query = from dtquer in dtmsgbody.AsEnumerable()
join dtusr in dtbodyuser.AsEnumerable()
on dtquer.Field<string>("userId") equals
dtusr.Field<string>("userId")
select new DataRow
[
dtquer.Field<string>("userId"),
dtusr.Field<string>("userNick"),
dtquer.Field<int>("timeShift"),
dtquer.Field<int>("message_Id"),
dtquer.Field<string>("msgText_Text")
];
或者,使用“var”使“查询”对象不那么具体,因此您选择的类型可以决定 IEnumerable 的组成:
var query = from dtquer in dtmsgbody.AsEnumerable()
join dtusr in dtbodyuser.AsEnumerable()
on dtquer.Field<string>("userId") equals
dtusr.Field<string>("userId")
select new
{
userId = dtquer.Field<string>("userId"),
userNick = dtusr.Field<string>("userNick"),
timeShift = dtquer.Field<int>("timeShift"),
message_Id = dtquer.Field<int>("message_Id"),
msgText_Text = dtquer.Field<string>("msgText_Text")
};
尽管您稍后将在 CopyToDataTable() 的代码中需要 DataRows,所以为了我的钱,我自己会采用第一种方法,而不是将“var”与我需要转换的匿名类型一起使用。
编辑
为了回应评论中提到的内容,摆脱对 Copy() 的依赖可能是更好的解决方案。通过定义表结构,然后将所需的值分配给适当的列,您可以绕过转换问题。
DataTable dt10 = new DataTable();
dt10.Columns.Add("UserId");
dt10.Columns.Add("Nickname");
dt10.Columns.Add("TimeShift");
dt10.Columns.Add("MessageId");
dt10.Columns.Add("MessageText");
var query = from dtquer in dtmsgbody.AsEnumerable()
join dtusr in dtbodyuser.AsEnumerable()
on dtquer.Field<string>("userId") equals
dtusr.Field<string>("userId")
select new
{
userId = dtquer.Field<string>("userId"),
userNick = dtusr.Field<string>("userNick"),
timeShift = dtquer.Field<int>("timeShift"),
message_Id = dtquer.Field<int>("message_Id"),
msgText_Text = dtquer.Field<string>("msgText_Text")
};
var counter = 0;
foreach (var row in query)
{
dt10.NewRow();
var newRow = dt10.Rows[counter];
newRow.ItemArray[0] = row.userId;
newRow.ItemArray[1] = row.userNick;
newRow.ItemArray[2] = row.timeShift;
newRow.ItemArray[3] = row.message_Id;
newRow.ItemArray[4] = row.msgText_Text;
counter++;
}
// Should end up with dt10 having all the results from the query above loaded into it
没有依赖项就很难检查,但是您报告的初始错误不再显示在我的 Visual Studio 中。
- 1 回答
- 0 关注
- 223 浏览
添加回答
举报