2012-12-06 2 views
0

저는 이것을 얼마 동안 조사해 왔으며, 어딘가에서 주제를 놓친 경우 올바른 방향으로 나를 가리키고 사과를 수락하십시오.DGV에 LINQ 쿼리가 표시되지 않습니다.

들어오는 DataTable에 대해 LINQ 쿼리를 수행하고 완료된 필터링을 기반으로 새 열을 설정합니다. 전달되는 정보는 CompanyName, CustomerID, LastName, FirstName, ContactTitle과 같은 열을 포함하는 단일 행입니다.

제 질문은 정보를 DGV에 아무 것도 반환하지 않거나 잘못 처리 한 부분까지 정보를 지나치게 필터링하고 있습니까?

DataTable에서 전달 된 정보를 기반으로 다른 테이블을 쿼리하려고합니다.

  var query = (from id in IncomingOrderDetails.AsEnumerable() 
        from o in db.Orders 
        from c in db.Customers 
        from r in db.Regions 
        where (id.Field<int>("OrderID") == o.OrderID) 
        where (o.CustomerID == c.CustomerID) 
        where (c.Region == r.RegionDescription) 
        select new 
        { 
         CustomerID = c.CustomerID, 
         CompanyName = c.CompanyName, 
         ContactName = c.ContactName, 
         RegionDescription = r.RegionDescription, 
         Country = c.Country, 
         Phone = c.Phone 
        }).ToList(); 

     custInfoDGV.DataSource = query; 
+0

는 디버그 할 때 var 쿼리가 null입니까? –

+0

죄송합니다. 인터넷 문제가있었습니다. 값은 null을 리턴합니다. – user1865299

답변

0

이 행 :

where (c.Region == r.RegionDescription) 

가 ... 의심스러운 보이는 여기 내 쿼리입니다. c.Region = r.RegionDescription 일 경우 왜 r을 가져와야합니까? 당신이 그것을 사용하는 것은 모두 RegionDescription을 가져 오는 것입니다.

테이블을 모르지만 일치하지 않는 두 필드를 결합하면 확실히 0 레코드가 반환됩니다. :)

+1

약간의 조정을하고 문제를 발견했다고 생각합니다. 기본 오류는 "열 'OrderID'테이블에 속하지 않습니다." – user1865299

+0

악명 높은 Northwind 데이터베이스를 사용하고 있습니다. – user1865299

+0

문제가 해결되었습니다. OrderID를 전달하지 않아 액세스 할 수 없습니다. 모두를 도와 주셔서 감사합니다 : D – user1865299

관련 문제