2016-07-20 1 views
1

설명하는 데 약간의 설정이 필요합니다. 데이터베이스에서 "nulls are not bad"라는 사실을 알고 있으며 그 이유는 무엇입니까? 그렇지만 비즈니스에서 데이터 소스를 사용하는 방법에 대해서는 선택의 여지가 없습니다. 데이터 소스는 데이터 세트에 null을 가지고 있으므로 그대로 사용해야합니다. (잘하면이 예상되는 주소 "글쎄, 귀하의 데이터 집합 nulls ...해서는 안"또는 "널 null 그냥 제거하지 왜 ...?")Null 허용 열이있는 LINQ 쿼리에서 "모두 선택"하는 방법

내가 이렇게 샘플 집합을 가정하면

  • 모든 :

    Campus | Name  | Relationship 
    --------------------------------- 
    A  | Bob  | Relationship 1 
    B  | Bill  | NULL 
    B  | Carol  | Relationship 2 
    C  | Sally  | Relationship 1 
    

    지금 나는 Relationship 열의 값의 고유 한 목록을 기준으로 결과를 필터링 할 수있는 옵션 목록을 사용하고 가정 : "NULL은"실제 null의 경우 (의미는 모두 다시 표시 코드) 나는 "모든"옵션을 가지고 있지 않은 경우, 충분히 간단 할 것 2

  • NULL
  • 관계 1
  • 관계 : 내가 확인한

    private IEnumerable<RwsBasePhonesAndAddress> PopulateQuery(string SelectedCampus, 
        string SelectedRelationship) 
    { 
        IEnumerable<RwsBasePhonesAndAddress> query = 
         db.RwsBasePhonesAndAddresses.Where(m => m.Campus == SelectedCampus); 
    
        if (!string.IsNullOrEmpty(SelectedRelationship)) 
         query = query.Where(m => m.Relationship == SelectedRelationship); 
        else 
         query = query.Where(m => m.Relationship == null); 
    
        query = query.OrderBy(m => m.StudentName).AsEnumerable(); 
        return query; 
    } 
    

    "NULL"이 필터로 선택되면 "NULL"레코드를 포함하여 "SelectedRelationship"매개 변수와 일치하는 결과를 반환합니다.

    옵션 목록에 "All"을 포함시키는 것이 어렵습니다. "관계"열에 null이 없으면 null을 사용합니다. SelectedRelationship 매개 변수는 "SelectedRelationship '에서 필터링하지 않음"옵션으로 사용할 수 있습니다.

    코드에 "필터하지 않음"옵션을 사용할 수있는 방법이 있습니까?

  • 답변

    2

    나는 그 질문을 완전히 이해하고 있는지 확신 할 수 없다. 내가 위에서 이해 한 코드에서 당신은 "All"값을 얻었을 때 아무것도 필터링하지 않는 부분이 빠져있다. 권리? 그렇다면 :

    private IEnumerable<RwsBasePhonesAndAddress> PopulateQuery(string SelectedCampus, 
        string SelectedRelationship) 
    { 
        IEnumerable<RwsBasePhonesAndAddress> query = 
         db.RwsBasePhonesAndAddresses.Where(m => m.Campus == SelectedCampus); 
    
        if(string.IsNullOrEmpty(SelectedRelationship)) 
         query = query.Where(m => m.Relationship == null); 
        else if (SelectedRelationship != "All") 
         query = query.Where(m => m.Relationship == SelectedRelationship); 
    
        query = query.OrderBy(m => m.StudentName).AsEnumerable(); 
        return query; 
    } 
    
    +1

    이제는 내가보고있는 것처럼 보입니다. 나는 다른 각도에서보아야 만했습니다. –

    +0

    @Rubix_ 복수 - 우리 모두를 위해 그렇게 많은 시간입니다 :) –

    관련 문제