2016-09-12 2 views
0

T-SQL에 대한 데이터 계층 코드를 작성하는 경우 종종 SqlParameterSqlCommand에 추가해야합니다. (실시 예 A DateTime?의 경우) 널 타입의 경우는 이런 식 해주기SqlCommand 매개 변수, nullable 값을 더하는 짧은 방법?

if (t.StartDate.HasValue) 
    cmd.Parameters.Add(new SqlParameter("@start_date", t.StartDate)); 
else 
    cmd.Parameters.Add(new SqlParameter("@start_date", DBNull.Value)); 

I는 원 연산자 ?:을 사용할 수 있으며, 인텔리/컴파일러 암시도 없다 "불평하므로 'System.DateTime?'유형 간의 변환 및 'System.DBNull'.

코드의 제 4 개 라인을 작성하는 짧은/깔끔한 방법이 있나요?

+1

당신은 항상 당신이 사용하고자하는 일반적인 유형의 컴파일러에게 캐스트 연산자를 사용할 수 있습니다 ,이 경우'System.Object'. –

+0

이것을 확장 메소드에 캡슐화하고 필요할 때마다 다시 사용하십시오. –

+0

더 짧은 방법이 필요한 경우 여기에 작성된 것과 같은 확장을 사용할 수 있습니다 : http://stackoverflow.com/a/39446645/284240 –

답변

-1
cmd.Parameters.Add(new SqlParameter("@start_date", t.StartDate.HasValue?t.StartDate:DBNull.Value)); 
+1

같은 질문에 삼항 연산자의 두 결과 중 적어도 하나를 캐스팅하지 않는 한 (OP 질문에 이미 명시된대로) 컴파일되지 않습니다. 'object'. –

+1

자세한 내용을 편집하십시오. 코드 전용 및 "시도하십시오"답변은 검색 가능한 콘텐츠가 없으므로 권장하지 않으며 누군가가 "시도해"야하는 이유를 설명하지 않습니다. – abarisone

관련 문제