시스템 설치 프로그램에서 기본 태그 검색을 사용하는 경우 각 태그에는 범주 ID 필드가 있습니다. 일부 태그에는 카테고리가 없습니다.LINQ, 제목 일치 여부, 개체가 Null 인 경우 제외
그래서 내 방법에서는 목록에 들어가기 위해 범주를 정의하기 위해 문자열을 전달합니다.
public IQueryable<Tag> List(string category)
{
//...
}
아무 것도 전달되지 않으면 카테고리가없는 태그를 반환하고 싶습니다. 나는이 같은 쿼리를 작성하는 경우이 (그렇지 않은 경우 하나가 null의 경우, 하나) 내가 모든 일에서이 작업을 수행 할 수 있는지 궁금 두 개의 쿼리가 필요합니다 다음 그러나 ...
return t from db.Tags
where t.Category == null
select t;
를 작동 단순화를위한 쿼리.
if(name == null)
return t from db.Tags
where t.Category.Name == null
select t;
else
return t from db.Tags
where t.Category != null && t.Category.Name == name
select t;
그런 다음 필요한 DB 서버에 더 복잡한 쿼리를 실행하지 않으 :
현재 쿼리는 ...
return t from db.Tags
where t.Category.Name == name
select t;
'name'이 (가) null 인 경우 작동합니다. 왜'== null' 쿼리가 필요합니까? –
아니요, 작동하지 않습니다. 나는 그런 식으로 시도했다. name가 null의 경우는, 객체를 null에 동일하게하는 것과 같은 것이 아닙니다. 대신에, null 객체 인 객체 자신의 이름을 취득하려고 시도해, 에러를 슬로우합니다. – Ciel
어떤 종류의 오류/예외입니까? 그게 그냥 작동해야하기 때문에 무엇이 잘못 될지 아이디어를 얻으려면 .. –