Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 尝试使用linq排序对象列表时获取无效强制转换异常_Vb.net_Linq_Sorting - Fatal编程技术网

Vb.net 尝试使用linq排序对象列表时获取无效强制转换异常

Vb.net 尝试使用linq排序对象列表时获取无效强制转换异常,vb.net,linq,sorting,Vb.net,Linq,Sorting,我试图对tweet列表(类:SimpleTweet)进行排序,每个tweet都有与其关联的ID(x.ID,其中x是SimpleTweet类的对象)。我使用linq进行排序,使用“OrderByDescending”,但在我将List(SimpleWebet的)类型的新对象设置为与排序后的列表相等的行上出现了一个错误。我得到的错误是,“System.InvalidCastException:无法将'System.Linq.OrderedEnumerable2[SimpleWebet,System.

我试图对tweet列表(类:SimpleTweet)进行排序,每个tweet都有与其关联的ID(x.ID,其中x是SimpleTweet类的对象)。我使用linq进行排序,使用“OrderByDescending”,但在我将List(SimpleWebet的)类型的新对象设置为与排序后的列表相等的行上出现了一个错误。我得到的错误是,“System.InvalidCastException:无法将'System.Linq.OrderedEnumerable
2[SimpleWebet,System.Int64]';类型的对象强制转换为';System.Collections.Generic.List
1[SimpleWebet]”

守则:

 <WebMethod()> _
    Public Function GetTweetsByUserID(ByVal userID As Integer) As List(Of SimpleTweet)
        Dim result As New List(Of SimpleTweet)
        Dim urlTwitter As String = "https://api.twitter.com/1/statuses/user_timeline.xml?include_entities=true&include_rts=true&screen_name={0}&count=3"
        'Dim twitterfeed As String = utils.GetUserTwitterFeeds(userID, "docphin")
        Dim lq As New lqDFDataContext
        Dim var = lq.web_GetTweetsByUserID(userID).ToList()
        Dim sortedresult As New List(Of SimpleTweet)
        If Not var Is Nothing Then
            For Each twitterfeed In var

                Dim listURL As String = String.Format(urlTwitter, twitterFeed.TweeterFeed)

                Dim tweetXML As XmlDocument = utils.GetXMLForURL(listURL)

                Dim tweetnodelist As XmlNodeList = tweetXML.ChildNodes(1).ChildNodes

                For Each node As XmlNode In tweetnodelist
                    Dim tweet As New SimpleTweet
                    tweet.CreatedAt = node.SelectSingleNode("created_at").InnerText
                    tweet.HTMLText = utils.ReturnTextWithHRefLink(node.SelectSingleNode("text").InnerText)
                    tweet.ID = node.SelectSingleNode("id").InnerText
                    tweet.Name = node.SelectSingleNode("user/name").InnerText
                    tweet.ScreenName = node.SelectSingleNode("user/screen_name").InnerText
                    tweet.Text = node.SelectSingleNode("text").InnerText
                    tweet.UserID = node.SelectSingleNode("user/id").InnerText
                    tweet.ProfileImageURL = node.SelectSingleNode("user/profile_image_url_https").InnerText
                    result.Add(tweet)
                Next
            Next

        sortedresult = result.OrderByDescending(Function(tweet) tweet.ID)  
        End If
        Return sortedresult
    End Function
_
公共函数GetTweetsByUserID(ByVal userID为整数)作为(SimpleWebet的)列表
Dim结果作为新列表(SimpleWebet的)
将URL设置为字符串=”https://api.twitter.com/1/statuses/user_timeline.xml?include_entities=true&include_rts=true&screen_name={0}&count=3“
'Dim twitterfeed As String=utils.GetUserTwitterFeeds(userID,“docphin”)
Dim lq作为新lqDFDataContext
Dim var=lq.web\u GetTweetsByUserID(userID.ToList())
Dim sortedresult作为新列表(SimpleWeet的)
如果不是,那么var什么都不是
对于var中的每个twitterfeed
Dim listURL为String=String.Format(urlTwitter、twitterFeed.TweeterFeed)
Dim tweetXML作为XmlDocument=utils.GetXMLForURL(listURL)
Dim tweetnodelist为XmlNodeList=tweetXML.ChildNodes(1.ChildNodes)
将每个节点作为tweetnodelist中的XmlNode
Dim tweet作为新的SimpleWeet
tweet.CreatedAt=node.SelectSingleNode(“created_at”).InnerText
tweet.HTMLText=utils.ReturnTextWithHRefLink(node.SelectSingleNode(“text”).InnerText)
tweet.ID=node。选择SingleNode(“ID”)。InnerText
tweet.Name=node.SelectSingleNode(“用户名”).InnerText
tweet.ScreenName=node。选择SingleNode(“用户/屏幕名称”)。InnerText
tweet.Text=node。选择SingleNode(“文本”)。InnerText
tweet.UserID=node.SelectSingleNode(“用户/id”).InnerText
tweet.ProfileImageURL=node。选择SingleNode(“用户/配置文件\u图像\u url\u https”)。InnerText
结果。添加(tweet)
下一个
下一个
sortedresult=result.OrderByDescending(函数(tweet)tweet.ID)
如果结束
返回分拣结果
端函数

您需要通过调用
.ToList()
来具体化
结果。将其添加到此行的末尾:

sortedresult = result.OrderByDescending(Function(tweet) tweet.ID)

sortedResult
的类型为
List(属于SimpleWebet)
OrderByDescending
返回一个
IOrderedEnumerable(属于SimpleWebet)
,无法自动转换为预期类型。

因为您想返回一个
List(属于SimpleWebet)
您需要调用以从(SimpleWebet的)IEnumerable创建一个新列表。


ToList
强制立即执行查询求值。

谢谢,@becksftw。我希望你的第一个月是一个愉快的经历。如果答案解决了你的问题,别忘了把它标为已接受。
Return sortedresult.ToList()