2014-07-22 4 views
0

누군가 다음 표현을 일련의 표현 트리 호출로 변환하는 데 도움이 될 수 있습니까? 나는 선택 부분을 작동 시키려고 노력하고있다.람다를 표현식 트리로 변환

results.GroupBy(x => x.EntityID).Select(y => y.OrderBy(o => o.ResultOrder).FirstOrDefault()); 

디버거를 사용하여 검사기의 표현을 살펴 보았지만 아무런 의미가 없습니다. 나는 같은 GROUPBY로, 비트와 작업 그것의 조각을 가지고 : 항상 그런 것들을 나에게 도움이

var groupAssign = Expression.Lambda<Func<TransViewModel, int>>(viewEntityIDProp, viewParam); 
var grouped = Expression.Call(
    typeof (Queryable), 
    "GroupBy", 
    new Type[] { viewModelType, typeof(int) }, 
    new Expression[] { theBigResultset, groupAssign } 
    ); 
+0

정확히 무엇이 당신에게 이해가되지 않았습니까? – svick

답변

0

난 당신이 여기에 달성하려고하는지 모르겠지만, 하나의 도구가 Linqpad입니다, 여기에는 덤프 확장 메서드가있어 표현식에 넣을 수 있습니다. 이러한 람다를 Expression<Func<T, TResult>>으로 선언 한 다음 변수에 Dump 메서드를 사용하여 나중에 변환을 수행하는 데 사용할 수있는 읽을 수있는 표현 트리를 얻을 수 있습니다. 사용할 수있는 무료 도구가있을 수도 있지만이 점을 인식하지 못합니다.

Expression<Func<IEnumerable<TransViewModel>, IEnumerable<TransViewModel>>> stuff = results => results.GroupBy(x => x.EntityID).Select(y => y.OrderBy(o => o.ResultOrder).FirstOrDefault()); 

하는 당신은 덤프 메서드를 호출하고 해당 식 트리를 얻을 수 있습니다 : 귀하의 경우 가장 가능성이 당신은있다.

+0

고마워,하지만 지금은 훨씬 더 혼란스러워! 누가 이렇게 작은 줄의 코드가 너무 많은 횡설수설을 일으킬 것이라고 생각했을 것입니다! 좀 더 자세히 살펴 봐야 할 것입니다. – user3767042