我得到一个DataTable,想对其进行操作.遍历所有的rows,如果第一列的名字有重复的,第二列的的部门是不一样的,就把重复名字的记录变为一个row,只不过部门的cell变为两个部门的字符串用","隔开,比如
姓名 部门                       姓名  部门
张三  A          ----->变为     张三  A,B
张三  B谁能给我个算法啊!

解决方案 »

  1.   

    SQL实现create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+ Dep from TableName where UserName=@id
    set @str=right(@str,len(@str)-1)
    return(@str)
    End
    go--调用自定义函数得到结果
    select distinct UserName,dbo.fmerg(UserName) from TableName
      

  2.   

    如果你的是MSSQL数据库,可以这样实现
    --建表
    Create table Test(
    姓名 nvarchar(20)
    ,部门 Nvarchar(20)
    )
    --插入数据
    Insert into Test select '张三','A'
    union all select '张三','B'
    union all select '李四','A'--创建函数
    Create Function f_Test(@thisName Nvarchar(20))
    returns Nvarchar(4000)
    as
    Begin
    Declare @returnKey Nvarchar(4000)
    set @returnKey = ''
    select @returnKey = @returnKey +','+部门 
    from Test 
    where 姓名 = @thisName set @returnKey = stuff(@returnKey,1,1,'')
    return @returnKey
    End
    --测试
    select 姓名,部门=dbo.f_Test(姓名) 
    from Test 
    group by 姓名
      

  3.   

    另外,如果你确实想在DataTable中实现,可以这样
    1)用Hashtable 从DataTable中取出所有不姓名(取出后不重复)
    2)遍历Hashtable,分别取出相应姓名下的记录集,
    3)再将对应记录集的部门累加
      

  4.   

    如果不用SQL脚本来写,用代码怎么实现?
      

  5.   

    试了上面的几个sql还是不行啊~
    我用的是SQL SERVER
      

  6.   

    用SQL不行?
    你用我的例子测测看,我已经测试通过
      

  7.   

    yjdn(文刀无尽) 
    能把你的代码给我参考一下么?
      

  8.   

    T-Sql的上面已经有了,C#的,我没写