日期:2014-05-20  浏览次数:20907 次

linq
问:有一个表,其中的有些数据的某个字段的值重复
要求:保留其中的一条,并把其他条数据的某一字段给保留的这条。
例:
表A
字段 ID   UserID    OrgID   OrgName
值    1     01         01     组织1
     2     01         02     组织2
要的结果是
1   01    01,02    组织1,组织2
------解决方案--------------------
try


 var query = from t in a group t by t.UserID into g select new { UserID = g.Key, OrgID= string.Join(",", g.Select(tt => tt.OrgID).ToArray()), OrgName = string.Join(",", g.Select(tt => tt.OrgName).ToArray()) };
          
------解决方案--------------------
var query= from x in db.TableA
           group x by x.UserID into g
           select new 
           {
              ID=g.First().ID,
              UserID=g.Key,
              OrgID=String.Join(",",g.Select(y=>y.OrgID.Tostring()).ToArray()),
              OrgName=String.Join(",",g.Select(y=>y.OrgName).ToArray())
            };

------解决方案--------------------
引用:
谢谢各位大侠,终于好用了,马上给分。
不过还有个问题,
var query= from x in db.TableA.ToList()
           group x by x.UserID into g           
           select new 
           {
           ID=g.First().ID,
……


var query= from x in db.TableA.ToList()
            group x by x.UserID into g           
            select new 
            {
            ID=g.First().ID,
            UserID=g.Key,        
            UserName = (from u in db.TableB
                             where UserID ==g.Key
                        select u.UserName).FirstOrDefault() //假设你的用户表叫TableB , 用户名字段交UserName,你根据你实际的表名和字段修改


OrgID=String.Join(",",g.Select(y=>y.OrgID.Tostring()).ToArray()),        OrgName=String.Join(",",g.Select(y=>y.OrgName).ToArray())
            };