2010-03-10 65 views
4

我有一个使用LinqToSql的ASP.Net-MVC应用程序。我有一个subcontracts表,一个service_lines表和一个包含subcontract_id和service_line_id的映射/链接表Service_lineToSubcontracts。在转包视图中,我想列出相应的服务项目。显示由逗号分隔的值的列表,不带逗号结尾

这有效,但有一个尾随逗号。

<% foreach (var sls in item.Service_lineToSubcontracts) 
    { %> 
    <%= Html.Encode(sls.service_line.service_line_name+", ") %> 
<% } %> 

我想我应该能够使用像String.Join(", ", item.Service_lineToSubcontracts.ToArray()),但我不能确定如何获得service_line_names的阵列。

回答

3

这样做:

<%= Html.Encode(string.Join(", ", 
item.ServiceLineNames.Select(x=>x.service_line_name).ToArray())) %> 
+0

谢谢。这导致我在正确的方向 '<%= Html.Encode(string.Join(“,”,item.Service_lineToSubcontracts.Select(x => x.service_line.service_line_name).ToArray()))%>' – RememberME 2010-03-10 20:10:10

+0

伟大。我不太明白你的班级是如何建立的,所以我尽了全力;) – Keltex 2010-03-10 20:53:16

0

在Keltex回答可以省略调用ToArray()方法,因为String.Join方法与任何IEnumerable<T>工作。

一个更简洁和可定制形式的暗示是覆盖集合的元素的类的ToString()方法,你的情况这是可以做到的:

public class Service_lineToSubcontract 
{ 
    public Service_line service_line {get; set;} 
    ... 
    public override string ToString() 
    { 
    return service_line.service_line_name; // Or whatever you need 
    } 
} 

,然后用更简洁的形式:

<%= Html.Encode(String.Join(", ", item.Service_lineToSubcontracts)) %> 

也许这暗示是不是在这种情况下最好的选择,但是当你有键值对的集合,或者您需要一个逗号分隔的多个然后一个属性

由描述的列表它简化了很多