主题:表的问题
异乡的耗子
[专家分:250] 发布于 2006-08-14 13:25:00
表中有相同的编号.如何将相同的编号只取一个?
我是这样写的.出错,请高手指点
public void myrefrsh(DataTable table)
{
DataRow[] row=table.Select("distenct bh");//此处出错,其中bh是表中字段
foreach(DataRow isrow in row)
{
Console.WriteLine(isrow["bh"].ToString());
}
}
不知道有没有其它的方法!
回复列表 (共6个回复)
沙发
异乡的耗子 [专家分:250] 发布于 2006-08-14 17:58:00
各位大哥!急用啊!帮帮哦
板凳
telancs [专家分:680] 发布于 2006-08-14 21:12:00
private void button1_Click(object sender, EventArgs e)
{
DataSet1.testDataTable dt = new DataSet1.testDataTable();
DataSet1TableAdapters.testTableAdapter ta = new testDistInct.DataSet1TableAdapters.testTableAdapter();
dt = ta.GetData();
bool flag;
foreach (DataSet1.testRow tr in dt)
{
flag = false;
for (int i = 0; i < comboBox1.Items.Count; i++)
{
if (tr.Name == comboBox1.Items[i].ToString())
flag = true;
}
if(!flag)
comboBox1.Items.Add(tr.Name);
}
}
更为通用的方法:
using System.Collections;
private ArrayList GetNameList()
{
ArrayList NameList = new ArrayList();
DataSet1.testDataTable dt = new DataSet1.testDataTable();
DataSet1TableAdapters.testTableAdapter ta = new testDistInct.DataSet1TableAdapters.testTableAdapter();
dt = ta.GetData();
bool flag;
foreach (DataSet1.testRow tr in dt)
{
flag = false;
for (int i = 0; i <NameList.Count; i++)
{
if (tr.Name == NameList[i].ToString())
flag = true;
}
if (!flag)
NameList.Add(tr.Name);
}
return NameList;
}
调用的时候:
ArrayList NameList = new ArrayList();
NameList = GetNameList();
for (int i = 0; i < NameList.Count;i++ )
comboBox1.Items.Add(NameList[i].ToString());
可以实现分层结构设计.
3 楼
jzyray [专家分:20610] 发布于 2006-08-14 23:44:00
select distinct 字段 from 表
4 楼
异乡的耗子 [专家分:250] 发布于 2006-08-15 10:08:00
谢谢两位!非常感谢.
二楼的方法我试过,可以是可以,不过数据量大的时候会影响速度.
我想问的是DataTable.Select()方法中的筛选条件怎么写Distenct 语句?有没有办法写呢?这样会比较快一点.
5 楼
telancs [专家分:680] 发布于 2006-08-15 22:13:00
好像这个过滤表达式不能用Distinct。
在给你个例子:
{
System.Data.DataRow newdr;
newdr=dt.Rows[j];
for(int k=j+1;k<dt.Rows.Count;k++)
{
string d1=newdr["字段名"].ToString();
string d2=dt.Rows[k]["字段名"].ToString();
if(d1==d2)dt.Rows[k].Delete();
}
}
注:dt是你的DataTable
6 楼
jzyray [专家分:20610] 发布于 2006-08-15 23:32:00
DataTable.Select相当于where那一部分,自然不能用distinct
干吗之前不用SELECT DINSTINCT这样的sql语句来填充DataTable呢,毕竟数据库执行distinct的速度比手动对比速度要快很多
我来回复