我有一个数据集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" ...);
table.AsEnumerable().GroupBy(row => row.Field<int>("mo")).Select(group => group.First()).CopyToDataTable()
- Thomas Levesque以下单行代码可避免DataTable
中的重复行:
dataTable.DefaultView.ToTable(true, "employeeid");
其中:
ToTable()
方法的第一个参数是一个布尔值,指示是否要获取唯一(不重复)的行。
ToTable()
方法的第二个参数是根据哪一列选择唯一行时需要保留的列名。仅这些列将包含在返回的数据表中。
同样可以从 DataSet
中通过访问特定的 DataTable
来实现。
dataSet.Tables["Employee"].DefaultView.ToTable(true, "employeeid");
DataTable
的DefaultView
属性。 - Ian BoydToTable(boolean, params string[] columnNames)
方法允许指定多个列。 - Kristen HammackDataTable 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();
//This will filter all records to be distinct
dt = dt.DefaultView.ToTable(true);
// Create the list of columns
String[] szColumns = new String[data.Columns.Count];
for (int index = 0; index < data.Columns.Count; index++)
{
szColumns[index] = data.Columns[index].ColumnName;
}
// Get the distinct records
data = data.DefaultView.ToTable(true, szColumns);
语法:
DataTable dt = ds.Tables[0].DefaultView.ToTable(true, "ColumnName");
EX:-
DataTable uniqueCols = dsUDFlable.Tables[0].DefaultView.ToTable(true, "BorrowerLabelName");
这很容易
DataView view = new DataView(dt);
DataTable dt2 = view.ToTable(true, "Column1", "Column2","Column3", ...,"ColumnNth");
同时,dt1和dt2数据表中的Column1、Column2...ColumnNth列中包含唯一数据。