我是使用Linq查询的新手,正在尝试将IQueryable转换为自定义类型,但遇到了问题。参见下面的代码;我尝试添加.ToList<>()
,尝试使用.Cast<>()
,但没有任何效果。任何见识都会很棒。
错误:无法隐式转换类型
'System.Linq.IQueryable<string>'
到'System.Linq.IQueryable<eSTIP.Models.User>'
。显式转换存在(您是否缺少演员表?)
private static List<UserViewModel> _allBCCUsers = null;
public static List<UserViewModel> AllBCCUsers
{
get
{
if (_allBCCUsers == null)
{
eSTIPContext ctx = new eSTIPContext();
IQueryable<User> users = from u in ctx.BBCRecipient select u.Email; //Error On this line
_allBCCUsers = new List<UserViewModel>();
foreach (User u in users)
_allBCCUsers.Add(new UserViewModel(u));
}
return _allBCCUsers;
}
}
编译器将准确解释您的代码中正在发生的事情。
使用from u in ctx.BBCRecipient select u.Email
,您仅从Email
(用户?)中选择u
属性,而该属性是字符串,并且您试图将其存储在类型为[[User的IQueryable中。] >[现在,您有两个选择:将选择更改为select u
(如@Holger所说)或更改为IQueryable<string>
,但是在这种情况下,您需要在After代码中进行更多的更改。
UserViewModel
且具有User
的Email
的列表。