lambda表达式:获得基于另一个属性的属性
问题描述:
我想在我看来,建立HTML:lambda表达式:获得基于另一个属性的属性
对象内部<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
我想要在<a>
标签内放置多个labelValues
。
例如如果@item.Label = "Address"
那么我想
<li> Address <a href ="blah"> 1234 Cardiff LosAngeles California 90045 </a></li>
而其余的(APT,房子没有,城市,州,邮编),所以不会单独出现。用lambda表达式实现这个可能吗?
答
为什么不使用@if?
@foreach (var item in groupedItems)
{
@if (item.Label == "zip")
{
<li>@item.Label @item.labelValue</li>
}
}
我不认为lambdas或linq会是一个很好的解决方案,因为这些元素可能不会按您期望的顺序进来。在尝试将它们插入到HTML中之前,它可能更好地处理代码中的对象。 – chustar 2015-02-06 00:40:01
谢谢你。确信在代码背后做到这一点非常合理。 – BumbleBee 2015-02-06 00:46:43
你可以使用'groupedItems.Singe(item => item.Label ==“House No”)来创建字符串。labelValue + ...'。但是在后面的代码中处理对象会更好。 – raznagul 2015-02-06 01:15:38