请善待LINQ假...说我有8行数据,如下所示:
+-------------------+
| ID WORKTYPEDESC|
+-------------------+
| 1 plumber |
| 1 carpenter |
| 1 electrician |
| 2 juggler |
| 2 mime |
| 3 writer |
| 3 actor |
+-------------------+
Run Code Online (Sandbox Code Playgroud)
作为一个8项目的IList<Worktype>集合,Worktype看起来像
public class Worktype
{
public int Id { get; set; }
public string WorktypeDesc { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的是通过Id聚合得到一个包含3个Worktypes的列表,每个WorktypeDesc都是一个排序的,以分号分隔的列表,如下所示:
+-------------------------------------+
| ID WORKTYPEDESC |
+-------------------------------------+
| 1 carpenter;electrician;plumber |
| 2 juggler;mime |
| 3 actor;writer |
+-------------------------------------+
Run Code Online (Sandbox Code Playgroud)
??
只需分组Id,用于string.Join在每个组内聚合.
IEnumerable<Worktype> source = ...;
var query = source.GroupBy(
x => x.Id,
(id, g) => new Worktype
{
Id = id,
WorktypeDesc = string.Join(";", g.Select(x => x.WorktypeDesc).OrderBy(x => x))
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |