Asp.net 无法强制转换类型为';System.Data.Objects.ObjectQuery`1。。。。。输入';数据库模型1;。ASP
嗨,我正在尝试为任何在我的网站注册的用户分配一个默认组。由于该组的管理员Id是管理员,因此我在数据库中查询管理员Id为管理员的组,然后将该组分配给用户。但是,将抛出以下错误 “无法将“System.Data.Objects.ObjectQuery`1[DatabaseModel1.Group]”类型的对象强制转换为“DatabaseModel1.Group”类型。” 这是密码Asp.net 无法强制转换类型为';System.Data.Objects.ObjectQuery`1。。。。。输入';数据库模型1;。ASP,asp.net,linq,entity-framework,Asp.net,Linq,Entity Framework,嗨,我正在尝试为任何在我的网站注册的用户分配一个默认组。由于该组的管理员Id是管理员,因此我在数据库中查询管理员Id为管理员的组,然后将该组分配给用户。但是,将抛出以下错误 “无法将“System.Data.Objects.ObjectQuery`1[DatabaseModel1.Group]”类型的对象强制转换为“DatabaseModel1.Group”类型。” 这是密码 Dim defaultGroup = (From group As Group In context.G
Dim defaultGroup = (From group As Group In context.Groups
Where group.AdminID = ((From users As User0 In context.User0
Where users.Name Like "Administrator"
Select users.UserID).First)
Select group)
currentUser.Groups.Add(defaultGroup)//the error is being thrown here
任何帮助都将不胜感激
谢谢听起来您有一个可以返回多个结果的查询,但您试图将其分配给一个值变量 您可能只需要使用以下内容:
currentUser.Groups.Add(defaultGroup.First)
可能的选择是:
-允许多个结果并返回第一个结果;如果没有异常,将抛出异常First()
-允许多个结果并返回第一个结果;如果没有结果,将返回元素类型的默认值(例如FirstOrDefault()
)null
-允许多个结果并返回最后一个结果;如果没有异常,将抛出异常Last()
-允许多个结果并返回最后一个结果;如果没有结果,将返回元素类型的默认值(例如LastOrDefault()
)null
-只需要一个结果;如果没有结果或有多个结果,将引发异常Single()
var defaultGroupQuery =
from group in context.Groups
join user in context.User0 on group.AdminID equals user.UserID
where user.Name == "Administrator"
select group;
听起来您有一个可以返回多个结果的查询,但您试图将其分配给一个值变量 您可能只需要使用以下内容:
currentUser.Groups.Add(defaultGroup.First)
可能的选择是:
-允许多个结果并返回第一个结果;如果没有异常,将抛出异常First()
-允许多个结果并返回第一个结果;如果没有结果,将返回元素类型的默认值(例如FirstOrDefault()
)null
-允许多个结果并返回最后一个结果;如果没有异常,将抛出异常Last()
-允许多个结果并返回最后一个结果;如果没有结果,将返回元素类型的默认值(例如LastOrDefault()
)null
-只需要一个结果;如果没有结果或有多个结果,将引发异常Single()
var defaultGroupQuery =
from group in context.Groups
join user in context.User0 on group.AdminID equals user.UserID
where user.Name == "Administrator"
select group;
List adminIDs=context.User0.Where(u=>u.Name.Contains(“管理员”))
.选择(u=>u.UserId);
//您可以使用上面的'FirstOrDefault()',它将只返回int而不是'List`
//但我会告诉你如何获得所有的身份然后你可以得到第一个
int adminId=adminIDs.FirstOrDefault();
//然后仅获取一个使用此adminID的组
var defaultGroup=context.Groups.FirstOrDefault(g=>g.AdminID==AdminID);
if(defaultGroup!=null)
{
currentUser.Groups.Add(默认组);
}
//如果需要获取所有管理员组,可以使用“列出管理员ID”
var groups=context.groups.Where(gg=>adminIDs.Contains(gg.AdminID));
希望有帮助。列出adminIDs=context.User0.Where(u=>u.Name.Contains(“管理员”))
.选择(u=>u.UserId);
//您可以使用上面的'FirstOrDefault()',它将只返回int而不是'List`
//但我会告诉你如何获得所有的身份然后你可以得到第一个
int adminId=adminIDs.FirstOrDefault();
//然后仅获取一个使用此adminID的组
var defaultGroup=context.Groups.FirstOrDefault(g=>g.AdminID==AdminID);
if(defaultGroup!=null)
{
currentUser.Groups.Add(默认组);
}
//如果需要获取所有管理员组,可以使用“列出管理员ID”
var groups=context.groups.Where(gg=>adminIDs.Contains(gg.AdminID));
希望有帮助。该死的。。。真不敢相信我第二次爱上了这个。谢谢你,乔恩!该死真不敢相信我第二次爱上了这个。谢谢你,乔恩!