2013-01-11 2 views
0

을 연산 식 구성 : 동적으로 LINQ 동적으로 표현 결합하는 것이 가능

from result in results 
group result by result.Property 
into g 
select new g.Key 

'결과'표현

from c in collection where c.Property == true select c 

를 컬렉션이 첫 번째 표현식에서 반환해야 하는가?

내가 NHibernate에를 사용하여 DB에서 데이터를 가져 오기 위해 작성된 표현식을 사용하기 위하여려고하고있다, 그래서 결합 된 표현은 내가

from c in collection 
where c.Property == true 
group c by c.Property 
into g 
select new g.Key 

표현식으로 작성합니다 경우와 동일하고 싶은가에 정의되어 있습니다 수업 :

public class MyClass : MyAbstractClass<User> 
{ 
    public MyClass() 
    { 
     FirstExpression = users => from user in users where ... select user;    

     SecondExpression = results => from result in results 
         group result by result.Property into g 
         select g.Key 

    } 
} 

답변

0

예, 가능합니다. 간단하게 열거하지 않고 results 변수에 첫 번째 쿼리의 결과를 할당합니다

var results = from c in collection where c.Property == true select c; 

from result in results 
group result by result.Property 
into g 
select g.Key; 

BTW, 두 번째 질의는 간단한 distinct입니다 :

results.Distinct(r => r.Property); 
+0

좋아하지만 표현의 두 경우 FirstExpression과 SecondExpression과 같은 클래스의 속성입니까? –

+0

@ petrov.alex : 그 문장을 바꿔 보아라. 지금 당장 나타나지는 않는다. 표현식은 일반적으로 클래스의 속성이 아닙니다. 표현식은 클래스의 속성을 사용하여 작성됩니다. –

+0

질문을 업데이트했습니다. 현재 의미가 있는지 확인하십시오. –

1
var query = collection; 

if (condition) 
    query = query.Where(c => c.Property); 

var result = query.GroupBy(c => c.Property).Select(g => g.Key); 
관련 문제