-1

我一直在尝试找出创建类似于此页面上的工作列表的脚本的最佳方法:http ://www.usi.edu/careersv/jobsearch.asp 。我已经创建了数据库并填充了它,但我坚持使用最有效的方法来让我的信息以接近页面上的任何方式显示。我的理想外观是顶部的 AZ 超链接,一旦用户单击一个字母,它就会在水平列表下方显示可用的内容。

这是我到目前为止所做的:

  @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>
}

}

我可以就更有效的搬家方向获得一些建议吗?

4

3 回答 3

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>
    }
}

确保您没有空字符串或在字符查找中处理这种情况。

于 2013-08-16T21:32:11.427 回答
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>
于 2013-08-16T22:39:38.253 回答
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>
}
于 2013-08-16T21:44:59.913 回答