2014-01-09 3 views
-1

나는 네 개의 열, 즉와 dtEmployee라는 이름의 DataTable을 피하기하여 DataTable의를 필터링합니다. EmployeeId, EmployeePosition, SupervisorPosition, SupervisorId 모두 varchar (10) 유형입니다.는 별개의 열 중 일부는

enter image description here

나는 결과 아래 SQL 쿼리에 해당 dtEmployee에서 결과를 필터링 할.

Select * from dtEmployee where EmployeePosition not in (Select distinct SupervisorPosition 
from dtEmployee); 

은 내가 전체 쿼리 상당을 얻을 수있는 방법 Select distinct SupervisorPosition from dtEmployee

dtDistinctSupervisors = dtEmployee.DefaultView.ToTable(true, "SupervisorPosNum"); 

이 동일하다 같은 다른 DataTable의 이름 dtDistinctSupervisors를 작성하여 서브 쿼리 상당을 달성했다.

당신의 도움이 감사합니다. 감사. IN 부질 내부 Distinct

  • 는 Merin

답변

1

아무런 차이가 없다. 이것은 도트해야합니다

var dt = dtEmployee.AsEnumerable(); 
var result = dt.Where(emp => !dt.Any(sup => 
           sup.Field<string>("SupervisorPosition") == 
           emp.Field<string>("EmployeePosition"))); 

그리고는 콘솔에 결과를 표시하려면

foreach (DataRow row in result) // Loop over the rows. 
{ 
    Console.WriteLine("--- Row ---"); 
    foreach (var item in row.ItemArray) 
    { 
     Console.Write("Item: "); 
     Console.WriteLine(item); 
    } 
} 
+0

는 귀하의 의견 매그너스 주셔서 대단히 감사합니다. 또한 ** 결과 ** 내부의 데이터를 채우고 ** 결과 ** 내부의 항목 수를 계산하도록 도와주십시오. –

+0

"채우기"란 무엇을 의미합니까? '.ToList()'를 마지막으로 추가하여 행에 대한 목록을 가져올 수 있습니다. – Magnus

+0

채우기 란 ** 결과 ** 내의 모든 행 항목을 보는 것을 의미합니다. –