将Linq IQueryable 转换为Linq IQueryable

问题描述 投票:1回答:2

我是使用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;
    }
}
c# asp.net-mvc linq-to-sql entity-framework-6 linq-to-entities
2个回答
0
投票

编译器将准确解释您的代码中正在发生的事情。

使用from u in ctx.BBCRecipient select u.Email,您仅从Email(用户?)中选择u属性,而该属性是字符串,并且您试图将其存储在类型为[[User的IQueryable中。] >[现在,您有两个选择:将选择更改为select u(如@Holger所说)或更改为IQueryable<string>,但是在这种情况下,您需要在After代码中进行更多的更改。


0
投票
据您所知,您想返回包含UserViewModel且具有UserEmail的列表。
© www.soinside.com 2019 - 2024. All rights reserved.