1 回答

TA貢獻1858條經(jīng)驗 獲得超8個贊
您專門為 DataRow 類型的 IEnumerable 調(diào)用,然后在其中選擇一個 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”與我需要轉(zhuǎn)換的匿名類型一起使用。
編輯
為了回應(yīng)評論中提到的內(nèi)容,擺脫對 Copy() 的依賴可能是更好的解決方案。通過定義表結(jié)構(gòu),然后將所需的值分配給適當(dāng)?shù)牧?,您可以繞過轉(zhuǎn)換問題。
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 關(guān)注
- 210 瀏覽
添加回答
舉報