大家好,感謝提前選擇,插入行號使用LINQ用的string.join
我有一個關於如何(或者)應做以下問題。我有一個正在返回的項目列表,並且我正在使用一個string.join將這些部分編譯成頁面上的單個字符串,但現在我需要將行號添加到此顯示中。
目前這個數據是如何顯示我怎麼想它看起來被添加後的數字:
Title (before) Title (after)
--------- ---------
Book1 1. Book1
Book2 2. Book2
的數據被顯示在列表視圖在一個eval語句對每個項目(標題,程序),像這樣:
<asp:ListView runat="server" ID="lvResults" AutoGenerateColumns="False" ItemPlaceholderID="resultsPlaceHolder">
<EmptyDataTemplate>
<div style="width: 100%; text-align: center;">No results available.</div>
</EmptyDataTemplate>
<LayoutTemplate>
<table id="tblResults" summary="">
<tbody>
<asp:PlaceHolder runat="server" ID="resultsPlaceHolder"></asp:PlaceHolder>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
Text: <%# Eval("Text") %><br/>
Description: <%# Eval("Description") %><br/>
<br class="clear"/>
</td>
<td>
Title<br/><%# Eval("Title") %>
</td>
<td>
Program<br/><%# Eval("Value") %>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
我填充列表視圖與此:
List<MyBooks> newBooklist = oldBookList.Select(i => new MyBooks() { Id = i, Text = oldBookList.Where(o => o.Id == i).Select(o => o.Text).FirstOrDefault(), Description = oldBookList.Where(o => o.Id == i).Select(o => o.Description).FirstOrDefault(), //tried getting index here but output is wrong "{ index = 0, title = .. }" Title = string.Join("<br/>", oldBookList.Where(o => o.Id == i).Select((o,index) => new { index, o.Title }).Distinct()), Value = string.Join("<br/>", oldBookList.Where(o => o.Id == i).Select(o => o.Value).Distinct()), }).ToList();
我想解決上述問題,以便我可以將數字作爲string.join操作的一部分添加到文本中。爲此,我在這裏嘗試了以下建議How To Project a Line Number Into Linq Query Result和這裏How to get index using LINQ? [duplicate],但這兩個示例似乎都有一個單獨的屬性來轉儲我在場景中沒有的值。
我發現的另一個想法是考慮循環瀏覽列表標題並添加文本,然後再將此列表填充到列表視圖中,但我擔心這會是一個昂貴的操作,會不會是?
我最不願意做的一件事就是將這些數字添加到SQL查詢中,因爲此查詢在其他地方使用。
[更新]
如要求在下面的評論,我想有數字,但我需要的數字,供節目標題和另一組中。實現這一目標的最佳方式最終證明只是用foreach語句來設置數字,然後再遍歷列表。
int dt = 0; int oldId = 0; foreach (var d in oldList) { if (oldId != d.Id) { dt = 0; oldId = d.Id; } dt++; d.Title = dt + ". " + d.Title; d.Program = dt + ". " + d.Program; }
這兩個答案讓我更接近我的目標,現在我能夠得到我想要他們的數字,但現在我有一個問題,我有兩個單獨的列表,標題以及程序及其編號爲例1-22,當我需要的是標題編號爲1-9,程序編號爲1-13時。這種方式可以使用索引嗎? – 2014-09-20 12:16:58
@ElaineK不,不是由你在這裏給出的信息。這聽起來像是第二個問題。您應該投票並在此標記答案,並將其作爲新問題發佈。無論如何,它會得到更多的關注。 – paqogomez 2014-09-21 15:33:33