>

그래서 객체 목록을 가져 와서 쿼리 문자열에 계속 포함시키는 아래와 같은 함수가 있습니다. 이것은 잘 작동합니다.

query = includeExpressions.Aggregate(query, (current, include) => current.Include(include));

그러나 내가하고 싶은 것은 OrderBys를 집계하는 것입니다. 여기서 문제가 발생합니다. 내가 가진 문제는OrderBy를 사용하고 같은 줄에서ThenBy를 사용해야한다는 것입니다. for 루프 첫 번째 항목 사용 순서를 사용한 다음 사용합니다. 내가 겪고있는 문제는 주문을 활성화하기 위해 동일한 객체 라인에서 주문을 진행해야한다는 것입니다.

query.OrderBy(orderBy).ThenBy

할 수 없습니다

var usedOrderBy = true;
        foreach (var orderBy in orderBys)
        {
            if (usedOrderBy)
            {
                query = query.OrderBy(orderBy);
                usedOrderBy = true;
            }
            else
            {
                query = query.ThenBy(orderBy); // <-- Can not locate thenby
            }
        }
any ides.

처럼 전달하고 싶습니다

orderItems(x => x.Item1, x => x.Item2)

  • 답변 # 1

    이것을 확인

      var orderByList = new List<Expression<Func<TEntity, object>>>();
                Expression<Func<TEntity,object>> orderBy1 = x => x.Id;
                Expression<Func<TEntity, object>> orderBy2 = x => x.ToString();
                Expression<Func<TEntity, object>> orderBy3 = x => x.Id;
                orderByList.Add(orderBy1);
                orderByList.Add(orderBy2);
                orderByList.Add(orderBy3);
                var resultOrderedQueryable = orderByList.Aggregate<Expression<Func<TEntity, object>>, IOrderedQueryable<TEntity>>(null, (current, orderBy) => current != null ? current.ThenBy(orderBy) : query.OrderBy(orderBy));
    
    

  • 답변 # 2

    문제는 query 유형입니다  변하기 쉬운. 와이즈 비즈   ThenBy 에 적용 할 수있는 확장 방법입니다.  또는 System.Linq.IOrderedEnumerable<TSource>  그래서 당신은 할 수 없습니다

    System.Linq.IOrderedQueryable<TSource>
    
    

    아래 예와 같이 시나리오를 해결하기 위해 미리 정렬 된 결과를위한 추가 변수가 있어야합니다.

    IEnumerable<Point> points = GetPoints();
    points = points.OrderBy(p => p.X);
    points = points.ThenBy(p => p.Y);
    
    

  • 답변 # 3

    최초 IEnumerable<Point> points = GetPoints(); var orderedPoints = points.OrderBy(p => p.X); orderedPoints = orderedPoints.ThenBy(p => p.Y); 시드를 가질 수있는 경우 쿼리가 작동합니다. . 그런 다음 ThenBy를 연결할 수 있습니다. 언급했듯이, OrderBy   ThenBy 가 필요합니다  (또는 IOrderedEnumerable ) IOrderedQueryable 를 부착하기 전에 먼저  조항 :

    코드는 다음과 같습니다.

    ThenBy
    
    

    참조 : 스펙에서 동적 개수의 ThenBy 절을 생성하는 방법

    IOrderedQueryable<T> orderedQuery = null; for(int temp = 0; temp < orderBys.Count; temp++) { if(temp == 0) orderedQuery = query.OrderBy(orderBys[temp]); else orderedQuery = orderedQuery.ThenBy(orderBys[temp]); } query = orderedQuery ?? query;

  • 이전 regex - 특정 문자열을 포함하지 않는 문자열을 일치시키는 방법
  • 다음 c# - 디렉터리를 만들 수 없습니다 - systemunauthorizedaccessexception 오류