2012-09-06 2 views
1

캐스트를 만들거나 올바른 변환을 시도하는 데 약간의 문제가 있습니다. I 형 IQueryable<T> T 된 클래스의 쿼리가 있습니다Implicit conversion IQueryable <IGrouping <string, T>> to IQueryable <T>

var query = (from x in query 
      group x by US.FirstName into g 
      select g).Distinct(); 

이 오류가 나타납니다.

암시 System.Linq.IQueryable<T>에 유형 System.Linq.IQueryable<System.Link.IGrouping<string,T>>을 변환 할 수 없습니다를 >>

내가 원하는 무엇 사실 쿼리의 고유 한 값을 반환하는 것입니다.

+0

어떤 의미로 고유 한 값이 필요합니까? 유일한 독특한 이름은? 샘플 데이터와 원하는 출력을 제공하면 도움이 될 것입니다. –

+0

Distinct()가없는이 쿼리가 일부 중복 데이터를 반환한다는 점에서 고유 한 값입니다. 샘플 데이터 : Jon : 응용 프로그램을 활성화합니다. jon : 응용 프로그램을 닫습니다. Jon : 응용 프로그램을 다시 엽니 다. 내가하고 싶은 일은 Jon의 단 한 번의 행동을 반환하는 것이지, Jon의 행동 전체를 반환하는 것이 아닙니다. – Francky

+0

@Francky 예, 모든 예제 데이터는 이미 전체적으로 고유합니다. 그러나 그들은 'Jon'이라는 이름의 맥락에서 독특하지 않습니다. 이 작업 목록에있는 모든 고유 한 이름의 목록을 얻으려고하십니까? 귀하의 예에서 어떤 항목이 중복으로 간주되며 '고유'를 사용하여 제거 될 것으로 예상됩니다. – mclark1129

답변

1
vQuery = vQuery.GroupBy(x => x.FirstName) 
     .Select(g => g.First()); 

그러나 이것은 오히려 임의 될 것입니다 : 당신이 OrderBy 또는 "귀하의"구문 발견되는 OrderByDescending

.Select(g => g.OrderBy(x => x.WhatEverYouWant).First()) 

을해야

vQuery = (from US in vQuery 
group US by US.FirstName into g 
select g.First()) 
+0

.first() 메서드를 사용하면 동일한 오류 인 – Francky

+0

@ Francky Hmmm을 반환하며 쿼리 구문에는 사용되지 않습니다. 이게 더 좋지 않아? –

+0

마지막 하나가 옳았고 정상적으로 작동하는 것 같습니다. @Mike C, Jon Skeet 그리고 Raphael에 감사드립니다. 나는이 stackoverflow를 좋아할 것이라고 생각한다. – Francky

0

당신이 LINQ 실제로 당신의 그룹화를 실시합니다 IGrouping<TKey, TValue>의 콜렉션을 리턴하십시오. 이 결과를 원래 검색어 vQuery에 대해 정의한 변수에 다시 입력하려고합니다. 유형은 IQueryable<T>입니다. LINQ 쿼리의 결과를 IGrouping<TKey, TValue> 인 별도의 변수에 넣어야합니다.

var groupedValues = (from US in vQuery 
        group US by US.FirstName into uniqueFirstName 
        select uniqueFirstName).Distinct(); 
+0

Mike C, var 유형은 트릭의 절반을 수행하고 전에 시도했습니다. 것은 vQuery가 이미 강력한 유형이다. 이 메서드는 다음과 같은 메서드에서 사용됩니다. private void Filter (BackgroundWorker bw, ref IQueryable vQuery) \t \t {} – Francky

+0

'vQuery'는 강력한 형식이며 기술적으로'groupedValues'는이 줄이 실행 된 후에 강력하게 형식화됩니다. 당신의 문제는'vQuery'와 당신의 질의 결과가 두 가지 다른 타입이고, 바꿔 쓸 수 없다는 것입니다. – mclark1129

관련 문제