내 개체가 내보기에서 표 (표)를 구성하는 Linq 쿼리를 작성하고 있습니다.Linq 식의 변수 사용
filteredProducts =
filteredProducts.Take(take)
.Skip(pagesToSkip)
.OrderBy(w => w.ProductName)
.ToList();
매우 일반적인 패턴대로; 그리드는 어떤 열 머리글을 클릭했는지에 따라 다른 열을 'OrderBy'할 수 있습니다. 가능한 열 이름을 포함 할 수 있도록 하드 코드 된 'ProductName'을 대체해야합니다. solution is probably based on the approach presented at this question but하지만 내 유스 케이스는 아직 충분히 구현할 수 없었습니다. SO의 자동 제안은 분명히 공통적 인 문제이기 때문에 이상하게 보이는 다른 명확한 정보를 제공하지 않습니다.
var mySortColumn = "w.ProductId";
다음 :
나는 명백한 시도했습니다
.OrderBy(w => mySortColumn)
및 중 지정된 값에 대한 컴파일 또는 런타임 불평하지만 존경을 얻을 수 없습니다. 필자가 시도한 다른 변형은 컴파일러 오류를 즉시 발생시킵니다.
This article suggests I should use a SWITCH/CASE construct 각 가능한 'OrderBy'절마다 완전히 다른 쿼리를 작성하십시오. 나는 일반적으로 해킹으로 코를 돌리지는 않지만, Ick.
동적 SQL 일의 '문자열 만들기'와는 거리가 먼 것처럼 보입니다.
각 열에 대해 w => w.ProductName과 같은 식을 저장 한 다음 쿼리'OrderBy (productColumnExpression) '로 대체 할 수 있습니다. – Vladimir