我正在尝试从xml文件中获取数据,然后使用datatable.Select()过滤以在组合框中添加值。
但我得到重复的值,所以我需要应用DISTINCT排序。尝试了dt1.DefaultView.ToTable但没有运气。仍然在组合框中添加重复的项目。下面是我正在使用的代码片段:
DataTable dt1 = XMLCategory.ds.Tables["AgencyInfo"];
DataRow[] foundRows;
foundRows = dt1.Select("AgencyRegion='" + cmbAgPr_Region.Text + "'");
DataTable dt2 = dt1.DefaultView.ToTable(true, "AgencyMarket");
for (int i = 0; i < foundRows.Length; i++)
{
cmbAgPr_Market.Items.Add(foundRows[i][1]);
}
任何帮助..
答案 0 :(得分:1)
您可以使用LINQ和GroupBy
来区分。下面的示例代码假定您需要在列&#34; columnName&#34;中进行区分。使用string
类型:
var foundRows = dataTable.Select("...")
.GroupBy(row => row.Field<string>("columnName"),
(key, group) => group.First())
.ToArray();
答案 1 :(得分:0)
编辑:小修复。
您应该使用dt2中的行填充列表框,而不是dt1。你的ToTable返回到dt2,但foundRows来自dt1。这应该解决问题,如下所示。
DataRow[] distinctRows = dt2.Select();
for (int i=0; i < distinctRows.Length; i++)
{
cmbAgPr_Market.Items.Add(distinctRows[i][1]);
}
为了完整起见,您可以将distinctRows中的行作为替代构造进行操作:
foreach(Row currentRow in distinctRows)
{
cmbAgPr_Market.Items.Add(currentRow[1]);
}