웬만하면 1줄이라도 줄여서 쓰는 게 나는 편하고 좋거든


if (dbContext.Some_Model.FromSqlRaw("EXEC Some_StoredProcedure {0}", param)?.AsEnumerable().FirstOrDefault?.HasSome??false == false)

{

// add a new item while empty list

}


db에서 bool 형식으로 변환 가능한 데이터 요청하고 null 리턴되면 기본값은 false로 쓴다는 표현인데


?. 이건 왼쪽 연산자가 null이면 null리턴이고, 아니면 .으로 체이닝 가능하니까 널체크가 된 거라서 널예외가 발생 안하지.


마지막 HasSome은 bool? 타입으로 널가능한 bool 형식


마지막에 ?? 연산자는 왼쪽 연산자가 null이면 오른쪽값을 사용하고, 아니라면 왼쪽값 사용


요약해서 HasSome이 true이면 if문 건너뛰고, null 또는 false를 리컨하면 if문을 실행


그런데 HasSome이 true인데도 계속 if문이 실행됨


딱 보면 맨 뒤에 .....?.HasSome??(false==false) 처럼 작동하는 거


(......?.HasSome??false) == false 이렇게 괄호로 연산 순서 정해주면 해결되는데


오른쪽에서 왼쪽으로 연산하면 저리되니까, 의식 안하면 실수하기 쉬워보임


저런 건 인텔리센스가 경고 때려주면 편한데