C# LINQ聚合列表中的项,连接属性
请善待一个胆小鬼。。。 假设我有8行数据,如下所示:C# LINQ聚合列表中的项,连接属性,c#,linq,C#,Linq,请善待一个胆小鬼。。。 假设我有8行数据,如下所示: +-------------------+ | ID WORKTYPEDESC| +-------------------+ | 1 plumber | | 1 carpenter | | 1 electrician | | 2 juggler | | 2 mime | | 3 writer | | 3 actor | +--
+-------------------+
| ID WORKTYPEDESC|
+-------------------+
| 1 plumber |
| 1 carpenter |
| 1 electrician |
| 2 juggler |
| 2 mime |
| 3 writer |
| 3 actor |
+-------------------+
+-------------------------------------+
| ID WORKTYPEDESC |
+-------------------------------------+
| 1 carpenter;electrician;plumber |
| 2 juggler;mime |
| 3 actor;writer |
+-------------------------------------+
作为一个8项的IList
集合,其中Worktype
看起来像
public class Worktype
{
public int Id { get; set; }
public string WorktypeDesc { get; set; }
}
我想要的是按Id聚合得到一个包含3个工作类型的列表,每个工作类型都有一个WorktypeDesc,它是一个以分号分隔的排序列表,如下所示:
+-------------------+
| ID WORKTYPEDESC|
+-------------------+
| 1 plumber |
| 1 carpenter |
| 1 electrician |
| 2 juggler |
| 2 mime |
| 3 writer |
| 3 actor |
+-------------------+
+-------------------------------------+
| ID WORKTYPEDESC |
+-------------------------------------+
| 1 carpenter;electrician;plumber |
| 2 juggler;mime |
| 3 actor;writer |
+-------------------------------------+
??仅按
Id
分组,使用字符串。加入在每个组内聚合
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))
});
IEnumerable源=。。。;
var query=source.GroupBy(
x=>x.Id,
(id,g)=>新工作类型
{
Id=Id,
WorktypeDesc=string.Join(;),g.Select(x=>x.WorktypeDesc.OrderBy(x=>x))
});
仅按Id
分组,使用字符串。加入以在每个组内聚合
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))
});
IEnumerable源=。。。;
var query=source.GroupBy(
x=>x.Id,
(id,g)=>新工作类型
{
Id=Id,
WorktypeDesc=string.Join(;),g.Select(x=>x.WorktypeDesc.OrderBy(x=>x))
});
Voila。我只添加了一个ToList()来获取我想要返回的类型。非常感谢。瞧。我只添加了一个ToList()来获取我想要返回的类型。非常感谢。