2017-12-26 28 views
0

Linq 문과 구문 구문 도움말이 필요합니다. 전반적인 성명서는 길며 설계 통제 권한이없는 SQL Server 데이터베이스에 대해 선택합니다.0이 아닌 경우 Linq에서 선택하십시오.

내가 선택한 새 구에는 다음과 같은 열이 있습니다. LINQPad에서

   on_Hand_Qty1 = (from x1 in Material_Locations 
          where x1.Material == j.Part_Number 
           && x1.Location_ID != "MSSICONSMT" 
          select x1.On_Hand_Qty ?? 0.0).Sum() 
          , 

나는의 오류 얻을 : 연산자 '??' 'double'및 'double'유형의 피연산자에 적용 할 수 없습니다.

저는 ?? 하위 쿼리가 레코드를 반환하지 않을 가능성이 있기 때문입니다. 이 경우 값은 0이어야합니다.

값을 (double) 및 (double?)으로 캐스팅했지만 성능이 동일한 오류가 발생했습니다. j

성명서의 다른 부분에서 비슷한 하위 선택을합니다.

    Consignment = (from x in Material_Locations 
            where x.Material == j.Part_Number 
             && x.Location_ID == "MSSICONSMT" 
            select(float?) x.On_Hand_Qty ?? 0.0).ToList() 

무엇이 여기에 있습니까?

감사합니다.

+1

행에'?? '을 적용하고 있습니다. 쿼리가 행을 반환하지 않으면 행이없는 것을 0으로 변환하지 않습니다. – GSerg

답변

0

참조 도움을 주셔서 감사합니다. 나는 그것을 어떻게 구글인지 알 수 없었다.

이 구문은 작동합니다.

    on_Hand_Qty1 = Material_Locations 
           .Where (ml => ml.Material == j.Part_Number && ml.Location_ID != "MSSICONSMT") 
           .Sum (ml => (double?)ml.On_Hand_Qty) ?? 0,