2014-06-17 2 views
0

안녕 난 내가 다른 테이블에 탐색 속성 테이블 (CallRecords)가 다음Linq는, 필드에 의해 그룹에, 합계 필드에, 첫 번째 필드에

에 약간의 문제가있어 방법 (ResultCodes)

  1. 나는
  2. Sum (ResultCodesId의 발생)
  3. First는 포함 된 테이블과 필드 ResultCod에 ResultCodesId에 (CallRecords)에서 GroupBy을 수행 할 es.Name, (탐색 속성을 통해)의 resultCode의 즉 이름

    var exceptions = Db.CallRecords 
         .Include(x => x.ResultCode) 
         .Where(x => x.ClientId == id && x.ResultCodeId < 0 && x.StartTime >= startDate && x.StartTime <= finishDate) 
         .GroupBy(o => o.ResultCodeId) 
         .Select(g => new ExceptionViewModel 
          { 
           Code = g.Key ?? 0, 
           Total = g.Count(), 
           Name = g.First(x => x.ResultCode.Name) 
    
          }); 
    

이 문제이며, 다음 줄은 늘 컴파일

Name = g.First(x => x.ResultCode.Name) 

표현 형식 '문자열'로 변환 할 수 없습니다 반환 유형 bool

대답은 (겉으로보기에) 상당히 간단하지만 내 Google 및 스택 검색에서 나에게 필요한 예제를 제외한 모든 것을 제공합니다. 그래서 나는이 migh에 대한 대답을 생각했습니다. t 도움말 기타 부주의 한 여행자

정보

추가 업데이트

보기 모델

public class ExceptionViewModel 
{ 
    public int Code { get; set; } 
    public int Total { get; set; } 
    public String Name { get; set; } 
} 

데이터는 그 문제의 발현과 관련된 모든 속성을 볼 수 있듯이

public class ResultCode 
{ 
    [Required,Key] 
    public int Code { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 


public class CallRecord 
{ 
    [Required] 
    public int Id { get; set; } 

    // other properties removed for brevity 

    [Required] 
    public int? ResultCodeId { get; set; } 
    public virtual ResultCode ResultCode { get; set; } 

} 

위의 문자열 타입의, 나는 두뇌 방귀인지 또는 확실하지 않은 무언가가 있는지 잘 모르겠다.

+0

당신은 실제로 당신이 정확히 발생하는 어떤 문제를 언급하는 것을 잊었다 : 지금처럼 그렇게. – Jon

+0

죄송합니다. 도움이 될만한 정보를 추가했습니다. –

+0

각 그룹의 첫 번째 통화 기록 결과 코드의 이름을 가져 오시겠습니까? 구문은'g.First(). ResultCode.Name'입니다. – Jon

답변

1

표현 g.First(x => x.ResultCode.Name)은 그렇게 생각하지 않는다. First에 인수가있는 경우 인수는 열거 가능 시퀀스를 필터링하는 조건 자라고 가정합니다.

즉, .First(x => ...).Where(x => ...).First()과 같습니다. 이런 식으로 보면 x.ResultCode.Name이 그 맥락에서 유효하지 않다는 것이 확실합니다.

원하는 것은 각 그룹의 첫 번째 항목을 가져 와서 그 중 일부 데이터를 추출하는 것입니다.

g.First().ResultCode.Name 
관련 문제