2012-07-25 2 views
2
는 람다 내에서 다른 현명한 유형의 문을 할 수있을 것인지 궁금

, 비슷한 : 시놉시스라고C#을 람다 그렇지 않으면 문

는 하나 개의 컬럼을 제외하고, 정확히 같은 모양이 개 테이블 구조를 가지고, (표 1) 및 설명 (표 2). 내 구성 요소는 속성을 기준으로 두 테이블 중 하나를 읽고, 열이 있는지 여부를 확인하기 위해 하나의 람다 식을하고 싶습니다 :

(from p in table[this.TableName] 
where (p["Description"] != null) 
'otherwise' where (p["Synopsis"] != null) 
select p).First(); 

이 도움을 주셔서 감사합니다. 존재하지 않는 열을 액세스하는 예외를 발생하지 않는 것을 제공

답변

2

, 당신은 (||)를 논리적 OR 연산자를 사용 할 수 있어야한다 :

(from p in table[this.TableName] 
where (p["Description"] != null || p["Synopsis"] != null) 
select p).First(); 
+0

전적으로 허용 – atiyar

0

아니, 당신은 LINQ 쿼리 이해 구문을 확장 할 수 없습니다 새 키워드를 추가하십시오. 무엇 할 수있는 확장 방법을 추가하고 그런 식으로 자신의 논리를 작성하십시오 - 그러나 .Where(...).Otherwise(...) 실제로는 "그렇지 않으면"데이터를 얻으므로 -이 경우 도움이되지 않습니다. Where(...)에 의해 이미 필터링되었습니다.

또한 LINQ-to-Objects가 아닌 한 쿼리 인터프리터가 해당 개체를 숨 막힐 것입니다. 더 간단한 대답은 "아니오, 실제로 그렇게 할 수 없습니다"입니다.

다른 사람들이 언급했듯이 수 있습니다.||을 통해 조건을 단순화합니다.

0

인덱서가 존재하지 않는 열을 null (으)로 반환한다고 가정하면 논리 OR ("||")가 해결책 인 것처럼 들립니다. || 잘못 무엇

0

-

(from p in table[this.TableName] 
    where (p["Description"] != null || p["Synopsis"] != null) 
    select p).First(); 

???

관련 문제