我计划扩展 .包含(( 函数。 目前,我一直在使用这样的东西:
var data = _context.Examples
.Include(example => examples.SubExamples)
.FirstOrDefault();
if (data == null)
return null;
data.SubExamples = data.SubExamples
.OrderBy(subExamples => subExamples.CreatedOn)
.ToList();
return data;
我需要通过 CreatedOn 订购"SubExample"并将其转换为 List((,以便自动映射器可以毫无问题地映射它。由于我将在不同的实体上多次使用相同的方法,因此我计划扩展包含。但是我在如何重新分配列表方面遇到了问题。
public static IQueryable<TEntity> IncludeOrderBy<TEntity, TProperty>(
this IQueryable<TEntity> query,
Expression<Func<TEntity, TProperty>> include,
params Expression<Func<TEntity, TProperty>>[] orders)
{
query.Include(include);
// Need to assign to the Property as List() and Apply the OrderBy
return query;
}
问题是我如何将它们重新分配回列表并添加订单?
我不知道为什么你需要订单参数,但也许这个可以解决你的问题
public static IQueryable<T> IncludeOrderBy(this IQueryable<T> query,
Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, params Expression<Func<T, object>>[] includes)
{
includes.ForEach(x => query = query.Include(x));
if (orderBy != null)
{
query = orderBy(query);
}
return query;
}
你可以这样使用它:
list.IncludeOrderBy(x => x.OrderBy(y => y.CreatedOn));
试试这个:
return context.Examples
.Include(example => examples.SubExamples)
.FirstOrDefault()
?.SubExamples
.OrderBy(subExamples => subExamples.CreatedOn)
.ToList();