2013-08-16 58 views
-1

我一直在想出創建類似於此頁面上的工作列表的腳本的最佳方法:http://www.usi.edu/careersv/jobsearch.asp。我創建了數據庫並進行了填充,但我堅持以最有效的方式讓我的信息以任何接近頁面內容的方式顯示。我的理想外觀是頂部的A-Z超鏈接,一旦用戶點擊它顯示在水平列表下方的字母,就可以使用。Linq Razor腳本到A-Z索引

這是我迄今所做的:

@using admin.code.Database 

    @{ 
     var car = new DatabaseEntities(); 
     var result = (from item in table.Lists     
       orderby item.Name ascending 
       select item); 

foreach (var res in result) 
{ 
    <div> 
    <ul> 
     <li><a href="@res.Link">@res.Name</a></li> 
     </ul> 
    </div> 
} 

}

我能在一個更高效的方向移動得到一些建議嗎?

回答

1

按第一個字母組,然後通過組循環顯示。

東西沿着這一行:

var result = table.Lists.OrderBy(x => x.Name).GroupBy(x => x.Name[0]) 

顯示:

foreach(var res in result) 
{ 
    <a href="#@res.Key"></a> 

    foreach(var item in res.Where(x => x[0] == res.Key){ 
     <div> 
      <ul> 
       <li><a href="@item.Link">@item.Name</a></li> 
       </ul> 
      </div> 
    } 
} 

確保你沒有空字符串或手柄上的字符查找的話。

0
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray(); 

var car = new DatabaseEntities(); 
var result = table.Lists.OrderBy(l=>l.Name); // For displaying them all 
var groups=result.GroupBy(l=>l.Substring(0,1)).OrderBy(l=>l.Key); 
var hasAlpha=groups.Select(l=>l.key); 

<ul> 
foreach(var letter in alpha) 
{ 
if (hasAlpha.Contains(letter.toString()) 
{ 
<li>@letter.toString()</li> 

} else { 
<li><a href="#@letter.toString()">@letter.ToString()</a></li> 
} 
</ul> 

foreach(var group in groups) 
{ 
<ul id="#@group.Key"> 
foreach(var item in group) 
{ 
<li>@item.Name</li> 
} 
</ul> 
} 
+0

這應該傾倒了所有的信件,包括殘疾者,那麼也會產生底部的東西,按首字母分組,以及超鏈接的目標。無論如何還是非常接近。 –

0

我從鍵值啓動(即:標籤名),並建立從那裏查詢:

var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".Cast<string>(); 

var tabs = 
    from letter in letters 
    select new { 
    Key = letter, 
    Items = 
     from item in tables.Lists 
     where item.Name.StartsWith(letter, StringComparison.CurrentCultureIgnoreCase) 
     select item 
    }; 

<ul id="navLinks"> 
foreach (var tab in tabs) { 
    <li> 
    <a class="navLink" href="#@tab.Key"> 
     @tab.Key 
    </a> 
    </li> 
} 
</ul> 

<div id="items"> 
    foreach (var tab in tabs) { 
    <ul id="@tab.Key" class="tab"> 
     foreach (var item in tab.Items) { 
     <li class="tabItem"> 
      @item.Name 
     </li> 
     } 
    </ul> 
    } 
</div> 
+0

免責聲明:我重視代碼對性能的清晰度。 –

+0

我可以有一個添加ul和li的例子嗎? – Paradigm

+0

@Paradigm:上面的(未經測試的)代碼示例現在應該與USI頁面非常接近。 –