2014-01-13 4 views
2

다음 코드가 있습니다.
WType이 비어 있으면 키와 값에 빈 문자열이있는 빈 클래스를 반환하고 싶습니다. 나는 ";" 예상된다. 여기 빈 값을 가진 클래스를 반환하십시오.

IEnumerable<WportType> 

는 코드입니다 :

if (wType == "Riconda") 
{ 
    return dbContext.data_LookupValues 
     .Where(w => w.Category == "WLoc") 
     .OrderBy(w => w.SortId) 
     .Select(a => new WportType 
     { 
      Key = a.Key, 
      Value = a.Value 
     }); 

} 
else 
{ 
    return WportType 
     { 
      Key = "", 
      Value = "" 
     }; 
} 
+0

이 메서드의 반환 형식은 무엇입니까? 구문 오류를 고치더라도, 한 부분에서는'IQueryable '과'WportType'을 반환하려고합니다. –

답변

2
return new WportType // you missed new keyword also 
    { 
     Key = "", 
     Value = "" 
    }; // and ; here 

을하지만 그 코드에서 하나의 문제가 아니다

반환 형식이 있어야합니다. 부분이 IEnumerable<WportType>인 경우 부분은 WportType 부분을 반환합니다. 당신도 데이터베이스에서 단일 객체를 선택하거나 다른 부분에 기본 값으로 컬렉션을 만들해야합니다

if (wType == "Riconda") 
{ 
    return dbContext.data_LookupValues 
     .Where(w => w.Category == "WLoc") 
     .OrderBy(w => w.SortId) 
     .Select(a => new WportType { 
      Key = a.Key, 
      Value = a.Value 
     }); // or use something like FirstOrDefault() here 

} 
else 
{ 
    return new List<WportType> { 
     new WportType { Key = "", Value = "" } 
    }; 
} 
3

당신의 방법이 IEnumerable<WportType> 반환 나타납니다. 단일 항목을 반환하려고합니다.

아래처럼 :

if (wType == "Riconda") 
    { 
     return dbContext.data_LookupValues 
      .Where(w => w.Category == "WLoc") 
      .OrderBy(w => w.SortId) 
      .Select(a => new WportType 
      { 
       Key = a.Key, 
       Value = a.Value 
      }); 

    } 
    else 
    { 
     return new[] { new WportType { Key = "", Value = "" } }; 
    } 
+1

첫 번째 부분은 해당 유형의 항목에 대한 열거 가능/질의 가능 항목을 반환하기 때문에 두 번째 항목을'new [] {..}'에 래핑해야합니다. –

+0

@TimS. 네, 고칠 수 있어요. 감사. – gleng

+0

- Enumerable.Empty가 기본값 인 WportType과 같지 않습니다. –

0

당신은 이런 식으로 뭔가를 찾고있을 수 있습니다 당신은 콜렉션 내에서이 포장 할 필요가

return dbContext.data_LookupValues 
      .Where(w => w.Category == "WLoc") 
      .OrderBy(w => w.SortId) 
      .Select(a => new WportType 
      { 
       Key = !string.IsNullOrEmpty(wType) ? a.Key : "", 
       Value = !string.IsNullOrEmpty(wType) ? a.Value : "" 
      }); 

질문에서 판단, 나는 정확히 모르겠어요 최종 목표는 무엇입니까? 그러나이 방법은 원래 쿼리의 길이를 보존하고 wType이 null이거나 비어있을 때 ""로 WportType의 값을 설정합니다.

관련 문제