我无法理解在尝试针对实体链接执行此查询时生成的异常的性质。
var internalUsersFromRepos = userRepos.Users.Where(u => u.IsInternalUser)
.OrderBy(u => u.SirName)
.Skip((int)((page - 1) * usersPerPage))
.Take((int)usersPerPage)
.Select(u => new { User = u, Count = userRepos.Users.Count() })
.ToList();
无法转换类型 'System.Data.Objects.ObjectQuery
1' to type 'System.Linq.IQueryable
1'。 LINQ 实体仅支持投射 实体数据模型基元类型。
如果我用“Count = 3”之类的常量替换“Count = userRepos.Users.Count()”,那么没有异常,所以我相信查询的这个方面是关键。
答案 0 :(得分:1)
我认为你不能像这样组合ObjectQueries。你的查询也是完全错误的。使用此:
var query = userRepos.Users.Where(u => u.IsInternalUser);
var count = query.Count();
var internalUsersFromRepos = query.OrderBy(u => u.SirName)
.Skip((int)((page - 1) * usersPerPage))
.Take((int)usersPerPage)
.ToList();
我知道您希望在单次往返中返回计数和分页数据,但除非您使用存储过程,否则它看起来不可能。数据和计数会生成两个不同的结果集,因此无法轻松返回单个结果集。您当前的查询尝试返回用户列表,并为每个返回的用户计算所有用户的计算数量(没有IsInternalUser
过滤器)