0

我实际上在我的项目中使用过滤器。我将值传递到数据库中的 id 中。例如:如果学生姓名存在。我没有像“mala”那样存储学生姓名。我传递值 NameId 像 12,13 等,我的问题是当我过滤函数名称时它没有正确过滤。它只显示 Id。我怎样才能更改为名称?任何人请帮助我..我的代码在这里。

       <div class="section">
        <% var topFunctions = Model.GroupBy(q => q.FunctionId)
                               .OrderByDescending(gp => gp.Count())
                               .Take(5)
                               .Select(g => g.Key).ToList(); %>
        <h5>Function</h5>       

        <ul>
            <% foreach (var function in topFunctions)  { %>
                 <% var url = "http://localhost:55996/jb" + Djsite.Helpers.StringHelper.AssembleQueryStrings(filters) + "Fun=" + function; %>
                 <li><a href="<%: url %>"><%: function %></a></li>       
            <% } %>
        </ul>
    </div>

<% } %>
4

2 回答 2

0

首先,一个重要的建议说明:您应该在控制器中执行此过滤并将结果推送到专门为此类结果构建的模型类型中。我认为,这种逻辑属于业务逻辑,因此不应该出现在您的视野中。

不过,要回答最初的问题:这完全取决于函数的名称是否在您的Model. 如果不是,那么您需要将其放入其中。

假设它是,并且它可以与FunctionName属性一起使用,您可以使用它:

Model.GroupBy(q => q.FunctionId)      
     .OrderByDescending(gp => gp.Count())      
     .Take(5)      
     .Select(g => g.First().FunctionName).ToArray();

请注意,我也更改ToListToArray- 不要创建列表,除非您之后需要修改结果。

于 2012-07-06T11:54:12.500 回答
0

我想你想使用:

<li><a href="<%: url %>"><%: function.Name %></a></li> 

其中 .Name infunction.Name是您所称的用户名

编辑

根据您的评论:

如果您只向视图发送键列表,则视图names无法使用您的键。您需要将实际模型发送到您的视图,而不是键 - 键只是键,它们不包含任何实际用户的名称。您应该将您的逻辑移出您的视图以帮助促进此过程。

于 2012-07-06T11:46:29.040 回答