datalist读取的数据有重复,怎么才能让相同的数据只显示一条

dbda=newdb();stringstr="select*fromtb_shopwhereuser_name='"+Session["user"]+"'";OleDb... db da = new db();
string str = "select * from tb_shop where user_name='" + Session["user"] + "'";
OleDbDataReader sdr = da.oledr(str);
shop_dl.DataSource = sdr;
shop_dl.DataKeyField = "sh_id";
shop_dl.DataBind();
sdr.Close();
展开
 我来答
匿名用户
2011-07-06
展开全部
1、从数据库方面考虑 select distinct name from users

2、如果你datalist中的相同数据是有序(相同的ID在一起)的

eg: ID
1
1
2
3
用以下方法(原理:相同ID的只取一次):

for(int x = 0; x < datalist.count; x++)
{
for(int y = x + 1; y < datalist.count; y++)
{
if (datalist[y] == datalist[x])
{
//取出你要的记录
}
}

3、如果你datalist中的相同数据是无序(相同的ID可能不在一起)的

eg: ID
1
2
3
1
用以下方法(这里以取出没有重复ID为例):

//[ 创建一个结果对象 ]
List<string> listResult=new List<string>();
//[ 循环datalist ]
for(int i = 0;i < datalist.Count; i++)
{
//[ 依次从datalist往listResult对象中放入不重复的值 ]
listResult.Add(datalist[i]);
//[ 从datalist中第i个值往后循环比较 ]
for(int j=i+1; j<datalist.Count)
{
//[ 判断是否有相同的ID]
if(datalist[i] == datalist[j])
{
//[ 有相同的ID ]
//[ 从datalist列表中移除后一个ID(即datalist[j]) ]
datalist.RemoveAt(j);
}
else
{
//[ 没有相同的ID ]
//[ 进行下一次循环 ]
j++
}
//[ 从datalist中移除已经加入到结果对象中的ID ]
datalist.RemoveAt(i);
}
}

当循环结束时,listResult列表中的值即您要的结果
listResult[0]=1;
listResult[1]=2;
listResult[2]=3;
另外,虚机团上产品团购,超级便宜
漫漫追不腻
2011-06-23 · TA获得超过330个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:105万
展开全部
你把你的数据查询 去掉重复的 就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空帆峭
2011-06-23 · 超过17用户采纳过TA的回答
知道答主
回答量:132
采纳率:0%
帮助的人:43.4万
展开全部
string str = "select distinct * from tb_shop where user_name='" + Session["user"] + "'";
追问
我用了distinct,但是不管用啊,这个datalist控件(shop_dl)还是显示的是重复的数据,如果我把那个 * 改为ord_num,然后再在ord_num的前面加上distinct,系统就会提示错误信息:DataBinding:“System.Data.Common.DbDataRecord”不包含名为“sh_id”的属性,我不知道到底是怎么回事,很奇怪的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-06-29
展开全部
这个,我也遇到了,求解。还有关于Datalist嵌套的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式