나는 GroupBy (람다 식)를하기 위해 Dynamic Linq (ScottGu가 발행 한 것)를 사용하려고합니다. 나는 물건이있다. 그리고 나는 AsQueryable하고있다. 이것은 내가 가지고있는 것입니다 ..형식 인수를 사용에서 유추 할 수 없습니다. 아무도 도와 줄 수 있습니까?
하지만 논점을 사용에서 유추 할 수 없다는 오류가 발생합니다. 나는 그것이 올바른 주문을 보지 못한다고 생각한다.
항목은 List<Stock>
입니다.
나는 <>을 GroupBy
에 추가하려고 시도했지만 1 개 이상의 항목을 전달해야한다고 생각합니다. 나는 조금 혼란 스럽다.
내가 전달하는 필드 (문자열을 통해)는 모든 유형이 될 수 있습니다.이 예에서는 DateTime입니다.
표준 LINQ를 수행하면 작동합니다. 예 : 다음
var result = Items.AsQueryable().GroupBy(x => x.DeliveryDate);
은 (ScottGu에서) 확장 방법 :
public static IQueryable GroupBy(this IQueryable source, string keySelector, string elementSelector, params object[] values) {
if (source == null) throw new ArgumentNullException("source");
if (keySelector == null) throw new ArgumentNullException("keySelector");
if (elementSelector == null) throw new ArgumentNullException("elementSelector");
LambdaExpression keyLambda = DynamicExpression.ParseLambda(source.ElementType, null, keySelector, values);
LambdaExpression elementLambda = DynamicExpression.ParseLambda(source.ElementType, null, elementSelector, values);
return source.Provider.CreateQuery(
Expression.Call(
typeof(Queryable), "GroupBy",
new Type[] { source.ElementType, keyLambda.Body.Type, elementLambda.Body.Type },
source.Expression, Expression.Quote(keyLambda), Expression.Quote(elementLambda)));
}
나는이 프로젝트 using System.Linq.Dynamic;
에 사용했다가 - 그리고 난 다른 방법으로 동적 OrderBy
을 사용하고, 그래서 내가 그것을해야 알 그것을 볼 수 있습니다.
약간 혼란 스럽지만 동적 LINQ를 사용하여 어떤 개체를 사용하고 있는지 이해하지 못하는 것 같습니다. 단지 한 비 this
인수 거기로이 서명
public static IQueryable GroupBy(this IQueryable source,
string keySelector, string elementSelector, params object[] values)
와
[my article on CP] (http://www.codeproject.com/KB/webforms/HandleGridViewOnSorting.aspx)를 참조하십시오. 동일한 문제에 대한 다른 해결책이 있습니다. – abatishchev