2014-12-26 3 views
-1

많은 비슷한 질문이 있지만 모두 약간 다른 것처럼 보이고 솔루션을 이해할 수 없다는 것을 알고 있습니다. 데이터 테이블이 dt2입니다. 하나의 열을 검색하고 다른 열의 고유 한 항목을 기반으로 결과를 반환하고 싶습니다. 그래서 나는 빈도를 찾고 있는데 여러 행을 얻을 수 있었고 다른 열의 데이터가 뚜렷한 한 괜찮습니다.C# 데이터 테이블에서 고유 한 행 선택

string spot = ""; 
string expression = "Freq = '" + frequency + "'"; //search column 4 
int count = 0; 

DataRow[] results; 

results = dt2.Select(expression); 

foreach (DataRow row in results) 
{ 
    spot = spot + Convert.ToString(results[count][0]) + " - "; //showing results from column 0 
    count = count + 1; 
} 

spot = spot.Substring(0, spot.Length - 3); 
return spot; 

results[count][0]은 필자가 구분해야하는 열입니다. 현재 중복 열 0의이 세 가지있는 4 개 주파수가 존재하는 경우에 나는이 얻을 :

N1ADX - N1ADX - VA2FSQ - N1ADX

하지만 내가 원하는 것은 이것이다 :

N1ADX - VA2FSQ

내가 어떻게 할 수 있습니까? 감사합니다.

당신이 뭔가를 시도 할 수 있습니다

답변

1

...

DataTable results; 
dt2.DefaultView.RowFilter = expression; 
results = dt2.DefaultView.ToTable(true, "[name_of_column_0]"); 
foreach (DataRow row in results.rows) 
{ 
    ... 
} 

View.ToTable 기능은 자신의 데이터를 기반으로 데이터 테이블을 반환합니다. 첫 번째 매개 변수는 다른 값만 포함 할 것인지 결정하고 두 번째 매개 변수는 데이터 테이블에 포함 할 열의 이름을 가진 매개 변수 배열입니다.

다른 답변에서 언급했듯이 LINQ는 사용 가능한 경우 좋은 옵션입니다.

0

안녕하세요. 답장을 보내 주셔서 감사합니다. LINQ에 따라 나는 결국 이것으로 끝났습니다. foreach loop dir을 datatable과 함께 사용하는 것에 대한 생각은 이것에 대해 생각하는 방법과 관련이 있다고 생각합니다. 모든 해답

을위한

    var query = results.Select(x => x.Field<string>("Call")).Distinct(); 

        foreach (var callsign in query) 
        { 
         spot = spot + callsign + " - "; 
        } 

        spot = spot.Substring(0, spot.Length - 3); 

감사합니다

관련 문제