我在下面写了一些代码:
public IEnumerable<Photo> GetPhotos(int page, int pageSize, string userId = null, OrderBy orderBy = OrderBy.TimeOfCreation)
{
var c = Database.Set<Photo>().Where(p => string.IsNullOrEmpty(userId) || p.ClientProfileId == userId);
c = orderBy == OrderBy.TimeOfCreation ?
c.OrderBy(p => p.TimeOfCreation).Skip((page - 1) * pageSize).Take(pageSize) :
c.OrderBy(p => p.AverageRaiting).Skip((page - 1) * pageSize).Take(pageSize);
return c
}
是否可以在一个语句中完成所有操作并摆脱重复的代码?
答案 0 :(得分:4)
您可以将OrderBy
结果分配回同一个变量:
var c = Database.Set<Photo>().Where(p => string.IsNullOrEmpty(userId) || p.ClientProfileId == userId);
c = orderBy == OrderBy.TimeOfCreation
? c.OrderBy(p => p.TimeOfCreation)
: c.OrderBy(p => p.AverageRaiting);
return c.Skip((page - 1) * pageSize).Take(pageSize)
答案 1 :(得分:2)
您可以在value
内移动条件:
OrderBy