【问题标题】:How to append further fields to select list item "Text" in MVC 3?如何在 MVC 3 中附加更多字段以选择列表项“文本”?
【发布时间】:2013-07-12 11:52:52
【问题描述】:

我有:

ViewBag.StdLibraryId = new SelectList(db.StdLibrary, "Id", "Name",stdlibraryitem.StdLibraryId);

我想将另一列的值附加到文本输出中,所以它类似于

ViewBag.StdLibraryId = new SelectList(db.StdLibrary, "Id", Model.Name + "(" + model.Category.Name + ")", stdlibraryitem.StdLibraryId);

但是,显然上面的代码是错误的。我也倾向于在我的 LINQ 中使用 Lambda 表达式。

代码应该是什么样的?

提前非常感谢。

编辑

我的新代码:

            ViewBag.StdLibraryId = new SelectList(db.StdLibrary.Select(r=> new {Id = r.Id, Name= r.Name + "(" + r.StdSection.Name + ")"}), "Id", "Name", stdlibraryitem.StdLibraryId);

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 linq linq-to-sql linq-to-entities


    【解决方案1】:

    您可以只使用一个匿名对象来进行连接。

    var stdLibraryForCombo = db.StdLibrary
                             .Select(m => new {
                                Id = m.Id,
                                Name = m.Name + " (" + m.Category.Name + ")"
                             });
    ViewBag.StdLibraryId = new SelectList(stdLibraryForCombo, "Id", "Name", stdlibraryitem.StdLibraryId);
    

    【讨论】:

    • 谢谢,请参阅编辑。我想我们在同一时间沿着同样的思路思考!!但是我还有另一个问题,如果类别为空,那么我在“名称”中什么也得不到。
    • 基本上我需要“如果 Category 为 null 则使用 '' 而不是 Category 值”
    • Sorted= 类别 ?? “”。感谢您的帮助。
    • @SamJolly 嗯,而不是Category == null ? string.Empty : Category.Name
    • @SamJolly 只是不一样。你用了coalesce操作符,我用的是三进制的,这里好像更适应了……
    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2010-12-16
    • 2016-04-23
    • 2020-12-15
    相关资源
    最近更新 更多