第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Linq 連接合并數(shù)據(jù)表時出現(xiàn)錯誤無法隱式轉(zhuǎn)換類型

使用 Linq 連接合并數(shù)據(jù)表時出現(xiàn)錯誤無法隱式轉(zhuǎn)換類型

C#
守候你守候我 2022-06-12 10:27:48
我必須顯示來自 xml 文件的聊天。但是當(dāng)我加入 2 個合并表時,會出現(xiàn)一些錯誤。錯誤是:無法將類型“System.Collections.Generic.IEnumerable”隱式轉(zhuǎn)換為“System.Collections.Generic.IEnumerable”。存在顯式轉(zhuǎn)換(您是否缺少演員表?) D:\ChatReport\ChatReport\Default.aspx.cs 109 42 ChatReport    public void  chatload2()    {        DataTable dtmsg = new DataTable();        DataTable dtmsgtxt = new DataTable();        DataTable dtmsgbody = new DataTable();        DataTable dtuserinfo = new DataTable();        DataTable dtnewparty = new DataTable();        DataTable dtbodyuser = new DataTable();        DataTable dtmerge = new DataTable();        XmlTextReader xmlreader = new XmlTextReader(Server.MapPath("chattest.xml"));        DataSet ds = new DataSet();        ds.Locale = CultureInfo.InvariantCulture;        ds.ReadXml(xmlreader);        dtmsg = ds.Tables["message"];        dtmsgtxt = ds.Tables["msgText"];        dtuserinfo = ds.Tables["userInfo"];        dtnewparty = ds.Tables["newParty"];        dtbodyuser = dtnewparty.Copy();        dtbodyuser.Merge(dtuserinfo);        dtbodyuser.Columns.Remove("timeShift");        dtbodyuser.Columns.Remove("eventid");        dtbodyuser.Columns.Remove("chatTranscript_Id");        dtbodyuser.Columns.Remove("personId");        //dtbodyuser.Columns.Remove("newParty_Id");        dtbodyuser.Columns.Remove("visibility");        dtbodyuser.AcceptChanges();        DataTable dt = dtbodyuser;        dtmsgbody = dtmsg.Copy();        dtmsgbody.Merge(dtmsgtxt);        dtmsgbody.AcceptChanges();        DataTable dt10 = new DataTable();        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  
查看完整描述

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 中。


查看完整回答
反對 回復(fù) 2022-06-12
  • 1 回答
  • 0 關(guān)注
  • 210 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號