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; }
}

IEnumerable 中的字符串生成器

如果我

理解正确,您有一个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))
    });
相关文章: