比如如下DataTable:DW    DADUI   PERSON1       2       john1       3       jack1       3       tom1       2       jordan2       3       dennis
要求实现如下处理:
如果DW与DADUI均相同,则仅保留一列。上表处理后如下:DW    DADUI   PERSON1       2       john1       3       jack2       3       dennis请问上述如何实现?

解决方案 »

  1.   


    void Main()
    {
    DataTable dt = new DataTable();  
    dt.Columns.Add("DW",typeof(int));  
    dt.Columns.Add("DADUI",typeof(int));  
    dt.Columns.Add("PERSON");  
    dt.Rows.Add(1,2,"john");
    dt.Rows.Add(1,3,"jack");
    dt.Rows.Add(1,3,"tom");
    dt.Rows.Add(1,2,"jordan");
    dt.Rows.Add(2,3,"dennis");
    var result=from d in dt.AsEnumerable()
    group d by new {DW=d.Field<int>("DW"),DADUI=d.Field<int>("DADUI")} into g
    select new 
    {
      DW=g.Key.DW,
      DADUI=g.Key.DADUI,
      PERSON=g.FirstOrDefault().Field<string>("PERSON")
    };
    DataTable dtNew=dt.Clone();
    result.ToList().ForEach(d=>dtNew.Rows.Add(d.DW,d.DADUI,d.PERSON));
     
    }
      

  2.   

    有没有简单的方法,因此person字段后面,还有好多字段!
      

  3.   

    取数据时过滤,代码会少些,可能性能会有变化SELECT DW,DADUI,Max(PERSON) FROM Orders
    GROUP BY DW,DADUI
    having COUNT(*)>1
      

  4.   

    SQL语句,如何设计?select DW,DADUI,PERSON from ...其中如果DW与DADUI均相同,则取一条。