我实际上在我的project.i中使用过滤器。将值传递给数据库中的id.For例如:如果学生名称在那里。我没有存储学生名称,如“mala”。我传递的名称NameId如12,13etc。 ,我的问题是,当我过滤函数名称时,它没有正确过滤。它只显示Id.how我可以更改为名称吗?任何人请帮助我..我的代码在这里。
<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>
<% } %>
答案 0 :(得分:0)
我想你想要使用:
<li><a href="<%: url %>"><%: function.Name %></a></li>
function.Name
中的.Name就是您所谓的用户名
修改强>
根据你的评论:
如果您只向视图发送密钥列表,则视图无法使用names
。您需要将实际模型发送到视图,而不是键 - 键只是键,它们不包含任何实际用户的名称。您应该将逻辑移出视图以帮助促进此过程。
答案 1 :(得分:0)
首先,一个重要的咨询说明:您应该在控制器中进行此过滤,并将结果推送到专门为此类结果构建的模型类型中。我认为,这种逻辑将类视为业务逻辑,因此它不应该在您看来。
回答原始问题:这完全取决于您的Model
中是否有该功能的名称。如果不是那么你需要把它拿到那里。
让我们说它是,并且可以使用FunctionName
属性,您可以使用它:
Model.GroupBy(q => q.FunctionId)
.OrderByDescending(gp => gp.Count())
.Take(5)
.Select(g => g.First().FunctionName).ToArray();
请注意,我还将ToList
更改为ToArray
- 除非您之后需要修改结果,否则不要创建列表。