当前位置:  开发笔记 > 编程语言 > 正文

如何选择数据表中的不同行并存储到数组中

如何解决《如何选择数据表中的不同行并存储到数组中》经验,为你挑选了7个好方法。

我有一个数据集objds.objds包含一个名为Table1的表.Table1包含名为ProcessName的列.这个ProcessName包含重复的名称.所以我想只选择不同的名称.这是可能的.

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

Thomas Leves.. 350

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

好的,那么你需要分组,而不是分开.您可以使用Linq to DataSet:`table.AsEnumerable().GroupBy(row => row.Field ("mo")).选择(group => group.First()).CopyToDataTable()` (15认同)


小智.. 143

单行代码将避免重复的行DataTable:

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

哪里:

第一个参数ToTable()是一个布尔值,表示你是否想要不同的行.

第二个参数ToTable()是列名,我们必须根据它来选择不同的行.只有这些列将在返回的数据表中.

同样可以DataSet通过访问特定的a来完成DataTable:

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

我最喜欢它,因为它解释了使用的代码:) (12认同)

我最喜欢这个答案,因为它指向`DataTable`的`DefaultView`属性. (5认同)


Martin Moser.. 57

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();


Zain Ali.. 29

使用LINQ(.NET 3.5,C#3)

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

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


小智.. 15

你可以这样使用:

dataDataTable

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



1> Thomas Leves..:
DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "Column1", "Column2" ...);


好的,那么你需要分组,而不是分开.您可以使用Linq to DataSet:`table.AsEnumerable().GroupBy(row => row.Field ("mo")).选择(group => group.First()).CopyToDataTable()`

2> 小智..:

单行代码将避免重复的行DataTable:

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

哪里:

第一个参数ToTable()是一个布尔值,表示你是否想要不同的行.

第二个参数ToTable()是列名,我们必须根据它来选择不同的行.只有这些列将在返回的数据表中.

同样可以DataSet通过访问特定的a来完成DataTable:

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


我最喜欢它,因为它解释了使用的代码:)
我最喜欢这个答案,因为它指向`DataTable`的`DefaultView`属性.

3> Martin Moser..:
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();



4> Zain Ali..:

使用LINQ(.NET 3.5,C#3)

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

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



5> 小智..:

你可以这样使用:

dataDataTable

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



6> 小智..:
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();



7> Ravedave..:

为了改进上面的答案:dataview上的ToTable函数有一个"distinct"标志.

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


+1实际上这确实有效(至少在.NET 4.5中).如果指定布尔值"True"作为唯一参数,则它会对DataView中的所有列执行DISTINCT.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有