이 코드가없는 경우 0을 반환의 예외가 발생합니다 (좋아, 그렇게하지,하지만 비슷한 : P) 여기합계는() 대신 행이
var dogs = Dogs.Select(ø => new Row
{
Name = ø.Name,
WeightOfNiceCats = ø.Owner
.Cats
.Where(æ => !æ.Annoying)
.Sum(æ => æ.Weight),
});
나는 모든 개를 통과하고 최대 합 개와 동일한 소유자를 가진 모든 비 귀찮은 고양이의 체중 (비 nullable 십진수로). 물론, 거의 모든 고양이는 귀찮은, 그래서이 오류 얻을 : 필드는 null이 될 수 사용 외래 키의
The null value cannot be assigned to a member with type System.Decimal which is a non-nullable value type.
없음을. 따라서 오류는 Where
절이 고양이를 반환하지 않을 때 발생합니다. 종종 그렇습니다. 하지만 어떻게 해결할 수 있을까요? 그 일이 발생하면 0을 반환하고 싶습니다. Where
절 후 DefaultIfEmpty()
와 시도,하지만이 오류가 얻을 : 나는 이해할 것 같다
Object reference not set to an instance of an object.
합니다. 나는 Sum
후 ??
을 추가했지만, 그것은 습관이 오류로 인해 컴파일도 물론 의미가
Operator '??' cannot be applied to operands of type 'decimal' and 'decimal'
합니다. 그래서 내가 무엇을 할 수 있니? 만약 아무 것도 합계가 없을 때 Sum
이 0을 방금 돌려 주면 좋을 것입니다. 또는 어떤 종류의 문 SumOrZero
. Linq2SQL과 함께 작동하는 SumOrZero
메서드를 만드는 것이 어려울까요?
좋은 질문입니다. 이 문제는 MSDN에서 문서화되지 않은 것 같습니다. – Mykroft