如何为父母和孩子创建面包屑?

凯文·卡罗尔

我有一个像这样的模型:

public class MyEntity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ParentId { get; set; }
    public string FullBreadcrumb { get; set; }
}

我看到了如何使用linq为类别和子类别创建面包屑

您可以使用如下形式:

public IEnumerable<string> GetBreadcrumbs(IEnumerable<MyEntity> entities, int? parentId = null)
{
    var parents = entities.Where(x => x.ParentId == parentId);
    var children = entities.Where(x => x.ParentId != parentId);

    foreach (var parent in parents)
    {
        yield return parent.Name;
        foreach (var trail in GetBreadcrumbs(children, parent.Id))
            yield return (parent.Name + " > " + trail);
    }
}

这实际上确实很好,但是我需要的不是返回IEnumerable字符串,而是希望它返回填充了FullBreadcrumb的IEnumberable MyEntity。

可能只是太晚了,我很累,但是我很难把它付诸实践。我对收益也不熟悉。任何帮助都是非常有帮助的。

凯文·卡罗尔

我实际上可以自己解决此问题,但如果有人想知道我是这样做的:

public static IEnumerable<MyEntity> GetBreadcrumbs(IEnumerable<MyEntity> entities, int? ParentNodeId = null)
        {

            var childNodes = entities.Where(x => x.ParentCategoryId == ParentNodeId);
            foreach (var currentNode in childNodes)
            {
                var parent = entities.SingleOrDefault(x => x.Id == currentNode.ParentCategoryId);
                var childrens = entities.Where(x => x.ParentCategoryId == currentNode.Id);

                currentNode.FullBreadcrumb = string.Format("{0}{1}", (parent == null ? null : parent.FullBreadcrumb + " > "), currentNode.Name);
                yield return currentNode;
                foreach (var trail in GetBreadcrumbs(entities, currentNode.Id))
                {
                    yield return trail;
                }
            }
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建面包屑形状

来自分类Dev

如何使用pyqt创建面包屑

来自分类Dev

如何使用JavaScript创建面包屑?

来自分类Dev

如何在 opencart 中创建面包屑

来自分类Dev

如何为电子商务应用程序构建面包屑?

来自分类Dev

流星+铁路由器创建面包屑

来自分类Dev

遍历树以创建面包屑列表

来自分类Dev

使用父关系在JavaScript中创建面包屑

来自分类Dev

流星+铁路由器创建面包屑

来自分类Dev

PHP:从多维数组COMPLETE创建面包屑

来自分类Dev

如何使用没有插件的WordPress导航菜单创建面包屑?

来自分类Dev

使用两个查询在php的文章页面上创建面包屑

来自分类Dev

在asp.net MVC中创建面包屑路径

来自分类Dev

MPTT多父母面包屑

来自分类Dev

如何使面包屑响应?

来自分类Dev

如何禁用面包屑?

来自分类Dev

使用模块自动构建面包屑

来自分类Dev

如何创建Yii2面包屑

来自分类Dev

面包屑和Backbone.Marionette

来自分类Dev

面包屑和子类别

来自分类Dev

如何使Primefaces面包屑动态化?

来自分类Dev

extbase扩展-如何更新面包屑

来自分类Dev

如何处理面包屑?

来自分类Dev

如何获得Joomla面包屑的价值?

来自分类Dev

如何获取PHP面包屑的文本?

来自分类Dev

面包屑在angularjs中如何使用?

来自分类Dev

如何为Schema.org中的文章设置面包屑?

来自分类Dev

如何为tx_news TYPO3设置面包屑

来自分类Dev

流星面包屑