【问题标题】:lambda expression : get a property based on another propertylambda 表达式:获取基于另一个属性的属性
【发布时间】:2015-02-05 23:49:32
【问题描述】:

我正在尝试在我的视图中构建 HTML:

<div class="row contentHeaderInfo">
     @foreach (var groupedItems in Model.DSet.GroupBy(a => new {a.rowId}))
     {             
        <ul>
            @foreach (var item in groupedItems)
            {
                 <li>@item.Label  @item.labelValue</li>
            }
        </ul>            
     }
</div>

rowid = 1 的对象内的数据:

groupedItems[0] = {1,"FName","ABC"}
groupedItems[0] = {1,"LaName","DEF"}
groupedItems[0] = {1,"Address",""}
groupedItems[0] = {1,"City","LosAngeles"}
groupedItems[0] = {1,"State","California"}
groupedItems[0] = {1,"Zip","90045"}
groupedItems[0] = {1,"Street","Cardiff"}
groupedItems[0] = {1,"House No","1234"}
groupedItems[0] = {1,"Apt","1"}

对于某些label,我想在&lt;a&gt; 标记中放置多个labelValues

例如如果@item.Label = "Address"那么我想要

 <li> Address <a href ="blah"> 1234 Cardiff LosAngeles California 90045 </a></li>

其余部分(公寓、房屋编号、城市、州、邮编)不要单独出现。是否可以通过 lambda 表达式来实现?

【问题讨论】:

    标签: c# asp.net-mvc lambda


    【解决方案1】:

    为什么不使用@if?

    @foreach (var item in groupedItems)
    {
        @if (item.Label == "zip")
        {
            <li>@item.Label  @item.labelValue</li>
        }
    }
    

    【讨论】:

    • 我不认为 lambdas 或 linq 是一个好的解决方案,因为元素可能不会按照您期望的顺序出现。在尝试将对象插入 HTML 之前,最好在后面的代码中处理对象。
    • 谢谢你。确保在后面的代码中执行此操作非常有意义。
    • 您可以使用groupedItems.Singe(item =&gt; item.Label == "House No").labelValue + ... 构建字符串。但是在后面的代码中处理对象会更好。
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多