编译时间错误: “无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'Domain.User'。 存在显式转换(您是否错过了演员?)“
User newUser = uow.UserRepository.Get(u => u.FirstName == "Joah");
如果我添加一个演员:
,我会收到运行时错误“无法将'System.Collections.Generic.List`1 [Domain.User]'类型的对象强制转换为'Domain.User'。”
User newUser = (User)uow.UserRepository.Get(u => u.FirstName == "Joah");
如果我使用“var”,我会看到正在返回的对象,但我需要将其转换为“User”: - (
为什么会这样?
答案 0 :(得分:2)
这是因为您正在查询,结果是一个集合,其中任何具有Joah名字的人都会被返回。如果有多个结果会怎样?这是你可能想在这里考虑的事情。
然而,解决这个问题的一个简单方法就是选择第一个
User newUser = uow.UserRepository.Get(u => u.FirstName == "Joah").FirstOrDefault();
答案 1 :(得分:0)
uow.UserRepository.Get(u => u.FirstName == "Joah");
这将返回List
个事物(所有具有该名字的人)。
如果您只想要第一个,请使用
User newUser = uow.UserRepository.Get(u => u.FirstName == "Joah").FirstOrDefault();
答案 2 :(得分:0)
你的来电获取(u => u.FirstName ==" Joah")正在返回一个集合(所有名为Joah的用户)并且您正在尝试将其设置为newUser变量。
这就是发生了什么。
编译代码的原因是
User newUser = uow.UserRepository.Get(u => u.FirstName == "Joah").FirstOrDefault();
但请记住......