2012-08-01 2 views
2

동일한 데이터가 포함되어 있는지 확인 : 데이터 집합 컬럼 완전히 I는 아래와 같은 데이터 세트가

ID Name Data1 Data2 
1  MM  X  1000 
2  ST  Y  1000 
3  EC  Z  1000 
4  JT  T  1000 

내가 DataSet 결합하여 DataGridViewDataSet를 표시한다. 모든 데이터가 유사한 지 여부에 따라 Data2 열의 가시성을 설정하고 싶습니다.

위의 예에서 표시된 데이터가 DataSet의 모든 요소에 공통적이므로 Data2 열을 숨기고 싶습니다. 그러나 요소 중 하나에 해당 열의 고유 항목이있는 경우 열을 표시해야합니다.

DataSet을 반복하지 않고이 작업을 수행 할 수 있습니까? 내 DataSet 꽤 큰이며 여러 열에 대해이 검사를 수행하려면 반복하지 않는 것을 선호합니다. 당신은 모든 값이 동일한 것을 알고, 1 개 이상의 서로 다른 값이 있으면

if(dataTable.AsEnumerable().Select(row => row["Data2"]).Distinct().Count() > 1) 
{ 
    // Make column invisible 
} 

:

+0

아니요, 데이터 세트를 한 방향으로 반복해야합니다. – Magnus

+0

dataGrid.Columns [ "Data2"]. Visible = (dataSet.Tables [0] .DefaultView.ToTable (true, "Data2"). Rows.Count! = 1); 이것이 내가 정한 접근법입니다. DataSet의 ToTable() 함수에는 고유 값을 가져 오는 것만 요구하는 플래그가 있습니다. 그래서 나는 하나 이상의 별개의 가치가 나오는지 단순히 확인합니다. –

답변

1

당신은 당신이 열에서 얼마나 많은 고유 값 확인하기 위해 몇 가지 LINQ를 사용할 수 있습니다 .

0
var areSame = dt.Rows.Count > 0 && 
       dt.AsEnumerable().All(x => dt.rows[0]["Data2"].Equlas(x["Data2"]));