[C#] 데이터 테이블에서 고유 한 행을 선택하고 배열에 저장하는 방법

데이터 세트 객체가 있습니다. objds에는 Table1이라는 테이블이 있습니다. Table1에는 ProcessName이라는 열이 있습니다. 이 ProcessName에 반복되는 이름이 포함되어 있으므로 고유 한 이름 만 선택하고 싶습니다.

  intUniqId[i] = (objds.Tables[0].Rows[i]["ProcessName"].ToString());



답변

DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "Column1", "Column2" ...);


답변

한 줄의 코드를 따르면 DataTable: 의 중복 행을 피할 수 있습니다 .

dataTable.DefaultView.ToTable(true, "employeeid");

어디:

  • 의 첫 번째 매개 변수는 ToTable()A는 부울 는 별개의 행이나하지 여부를 나타냅니다.

  • 의 두 번째 매개 변수는 ToTable()고유 한 행을 선택해야하는 열 이름입니다. 이 열만 리턴 된 데이터 테이블에 있습니다.

DataSet특정에 액세스하여 에서 동일한 작업을 수행 할 수 있습니다 DataTable.

dataSet.Tables["Employee"].DefaultView.ToTable(true, "employeeid");


답변

DataTable dt = new DataTable();
dt.Columns.Add("IntValue", typeof(int));
dt.Columns.Add("StringValue", typeof(string));
dt.Rows.Add(1, "1");
dt.Rows.Add(1, "1");
dt.Rows.Add(1, "1");
dt.Rows.Add(2, "2");
dt.Rows.Add(2, "2");

var x = (from r in dt.AsEnumerable()
        select r["IntValue"]).Distinct().ToList();


답변

LINQ (.NET 3.5, C # 3) 사용

var distinctNames = ( from row in DataTable.AsEnumerable()
 select row.Field<string>("Name")).Distinct();

 foreach (var name in distinctNames ) { Console.WriteLine(name); }


답변

당신은 그렇게 사용할 수 있습니다 :

data 이다 DataTable

data.DefaultView.ToTable(true, "Id", "Name", "Role", "DC1", "DC2", "DC3", "DC4", "DC5", "DC6", "DC7");  

그러나 성능이 저하됩니다. 아래 코드를 사용해보십시오.

data.AsEnumerable().Distinct(System.Data.DataRowComparer.Default).ToList();  

성능을 위해; http://onerkaya.blogspot.com/2013/01/distinct-dataviewtotable-vs-linq.html


답변

var distinctRows = (from DataRow dRow in dtInventory.Rows
                                select dRow["column_name"] ).Distinct();

var distinctRows = (from DataRow dRow in dtInventory.Rows
                                select dRow["col1"], dRow["col2"].. ).Distinct();


답변

위의 답변을 향상 시키려면 : dataview의 ToTable 함수에는 “고유 한”플래그가 있습니다.

//This will filter all records to be distinct
dt = dt.DefaultView.ToTable(true);