Use LINQ to concatenate multiple rows into single row (CSV property)

后端 未结 6 1233
[愿得一人]
[愿得一人] 2020-11-27 19:42

I\'m looking for the LINQ equivalent to the Sybase\'s LIST() or MySQL\'s group_concat()

It\'ll convert:

User  Hobby
--------------
Bob   Football 
Bo         


        
6条回答
  •  [愿得一人]
    2020-11-27 20:17

    To do it in one Linq Statement. There is no way I'd recommend the code, but it shows that it could be done.

                var groupedUsers = from user in users
                               group user by user.User into userGroup
                               select new
                               {
                                   User = userGroup.Key,
                                   userHobies =
                                       userGroup.Aggregate((a, b) => 
                                           new { User = a.User, Hobby = (a.Hobby + ", " + b.Hobby) }).Hobby
                               }
                                ;
            foreach (var x in groupedUsers)
            {
                Debug.WriteLine(String.Format("{0} {1}", x.User, x.userHobies));
            }
    

提交回复
热议问题