我遇到了实体框架的问题。我正在尝试按照其中一个键的平均值对我的集合进行排序:
var userPhotos = Database.Set<Photo>().Where(p => string.IsNullOrEmpty(userId) || p.ClientProfileId == userId);
usersPhotos = usersPhotos.OrderByDescending(item => item.Votes.Average());`
在最后一行代码中,我有“LINQ to Entities不支持指定的类型成员'投票'。仅支持初始值设定项,实体成员和实体导航属性。” execpetion。 我的会员投票看起来像这样:
public class Photo : BaseEntity, IEntity<Guid>
{
public Photo()
{
Id = Guid.NewGuid();
Votes = new List<double>;
}
[Key]
public Guid Id { get; set; }
//Other fields
public ICollection<double> Votes { get; set; }
}
如何解决我的问题,并根据该成员的重视值进行排序?
答案 0 :(得分:1)
你需要的只是第一行末尾的ToList()。
你可以这样做;
var userPhotos = Database.Set<Photo>().Where(p => string.IsNullOrEmpty(userId) || p.ClientProfileId == userId).ToList();
var sortedUsersPhotos = usersPhotos.Where(p=>p.Votes!=null && p.Votes.Any()).OrderByDescending(item => item.Votes.Average());
答案 1 :(得分:0)
您可以使用GroupBy:
var sorted = userPhotos.GroupBy(item => item.Votes.Average()).OrderByDescending(item => item.Key);
如果您想使用相同的对象:
userPhotos = userPhotos.GroupBy(item => item.Votes.Average()).OrderByDescending(item => item.Key).SelectMany(x=>x);