类型'System.Linq.IQueryable(Of Integer)'的值无法转换为Integer

时间:2011-08-11 13:38:39

标签: vb.net linq entity-framework

我是EF Linq的新手,我几天来一直在努力解决这个问题。通过阅读这个论坛,我成功地做到了这一点:

Dim noPic = (From f In myEntities.FriendLists
             Where (f.UserID = Profile.ID)
             Select f.FriendID).Except(From g In myEntities.GuestLists
                                         Where g.EventID = _id
                                         Select g.FriendID)
Dim myNoPic As Integer = noPic
Dim show = From s In myEntities.UserProfiles
           Where s.UserID = myNoPic
           Select s.UserID, s.FirstName, s.LastName, s.ImUrl
Repeater2.DataSource = show
Repeater2.DataBind()

我试图让来自GuestList的FriendList中的所有人都显示在Repeater控件中。阅读论坛后,我能够在myNoPic声明中将.first()附加到noPic,最后得到一个结果,但这只给了我第一个元素。有没有人对如何做到这一点有任何建议?

2 个答案:

答案 0 :(得分:1)

noPic查询。它不是整数 - 它是整数的序列。所以你不能把它转换成一个整数,听起来你不想要它。

我的猜测是你想要的:

Dim show = From s In myEntities.UserProfiles
           Where noPic.Contains(s.UserID)
           Select s.UserID, s.FirstName, s.LastName, s.ImUrl

或者,将整个事物写为连接开始。 (我不会使用VB LINQ语法,否则我会为你做这件事。)

答案 1 :(得分:0)

问题归结为以下几点:

Dim myNoPic As Integer = noPic

Where s.UserID = myNoPic

我认为你想要完成的事情是这样的:

Dim noPic = (From f In myEntities.FriendLists
         Where (f.UserID = Profile.ID)
         Select f.FriendID).Except(From g In myEntities.GuestLists
                                     Where g.EventID = _id
                                     Select g.FriendID)
Dim myNoPic As Integer = noPic
Dim show = From s In myEntities.UserProfiles
       Where noPic.Contains(s.UserID)
       Select s.UserID, s.FirstName, s.LastName, s.ImUrl

Contains是我们想要的。它会将您的第二个查询更改为“将我的所有UserProfiles设置为其ID在noPic中”。