IEnumerable 中的字符串生成器
本文关键字:字符串 IEnumerable | 更新日期: 2023-09-27 18:34:34
>我有一个名为PostUnitManagers
的表,它提供了Post
表和Unit
表之间的多对多关系。
我想显示一个单位经理列表,该列表将显示帖子名称以及他们管理的单位列表。
我想使用StringBuilder
来创建这样的单位列表:
帖子 1 管理:单元 1、单元 2、单元 3
第2 位管理:第 4 单元、第 5 单元、第 6 单元等。
由于我对此还很陌生,因此我不知道该怎么做,并且已经走到了死胡同。
我目前有以下控制器来获取邮政单位经理列表,但这不会创建单位列表
public ActionResult UnitManagersList()
{
var records = db.PostUnitManagers;
var viewModel = records.Select(t => new ListUnitManagersViewModel
{
PostName = t.Post.PostName,
//Units = StringBuilder of all units they have a record in PostUnitMangers Table
});
return PartialView("_UnitManagersList", viewModel);
}
后期经理类
public class PostUnitManager
{
public int PostUnitManagerId { get; set; }
public int PostId { get; set; }
public int UnitId { get; set; }
public virtual Post Post { get; set; }
public virtual Unit Unit { get; set; }
}
如果我
理解正确,您有一个PostUnitManager
对象的集合PostUnitManagers
类似于:
class PostUnitManager
{
public Post Post { get; set; }
public Unit Unit { get; set; }
}
如果是这种情况,您需要按Post
值对初始集合进行分组(我假设它们覆盖Equals
方法(:
var grouped = db.PostUnitManagers.GroupBy(q => q.Post).ToArray();
然后,您需要提取在特定Post
下分组的单位值:
var result = grouped.Select(q => new ListUnitManagersViewModel()
{
PostName = q.Key.PostName,
Units = String.Join(", ", q.Select(w => w.Unit.UnitName))
});