2010-06-01 3 views
2

주문 테이블이 있습니다. 상태는 명령에 결합 된 토양 경계에 있습니다. 결합 된 토양 순서가 "제거됨"상태가 아닌 주문 만 반환하려고합니다.여러 조인을 사용하여 행을 제거하는 위치 사용 - linq

나는

join sso in db.SoilSamplingOrders on ord.order_id equals sso.order_id 
    where sso.status.Equals("Removed")!=true 

하지만 다음 레코드가 반환되지 않습니다 것을 생각했다! 어떤 도움 (아래 쿼리)에 대한

감사

var query = 

from ord in db.Orders 

join sso in db.SoilSamplingOrders on ord.order_id equals sso.order_id 
where sso.status.Equals("Removed")!=true 

join cust in db.Customers on ord.customer_id equals cust.customer_id 

select new Listing 
{ 
    assigned_to = sso.assigned_to, 
    company = cust.company, 
    order_id = ord.order_id, 
    order_created = ord.order_created, 
    customer_id = ord.customer_id, 
    order_created_by_employ_id = ord.order_created_by_employ_id, 
    first_farm_on_order = (from f in db.SoilSamplingSubJobs 
       where f.order_id == ord.order_id 
        select new ListingSubJob { first_farm_on_order = f.farm }). 
        AsEnumerable().First().first_farm_on_order, 
    total_fields = (from f in db.SoilSamplingSubJobs 
     where f.order_id == ord.order_id 
     select new { f.sssj_id }).AsEnumerable().Count(), 
    total_area = (float?) (from f in db.SoilSamplingSubJobs 
     where f.order_id == ord.order_id && f.area_ha != null 
     select f.area_ha).Sum() ?? 0 , 
    total_area_ph_density = (float?)(from f in db.SoilSamplingSubJobs 
     where f.order_id == ord.order_id && f.ph != null 
     select f.ph).Sum() ?? 0, 
}; 
+0

생성 된 SQL을 확인하십시오.이 문제가 발생하는 이유에 대한 실마리를 제공 할 수 있습니다. 또한'sso.status! = "를 사용하면 어떻게됩니까?'sso.status.Equals ("Removed ")! = true' 대신"? "을 제거 했습니까? –

+0

sso.status를 시도했습니다! = "제거"되었지만 기쁨이 없습니다. SQL은 어떻게 보입니까? – bergin

+0

해당 항목을 여기에서 확인하십시오. http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx – bergin

답변

1

DOH! 자연이 진공을 싫어하는 것과 마찬가지로 Null은 선택 항목에 포함될 수 없습니다. 상태 필드에 값을 추가하고 작동합니다.

관련 문제