【发布时间】:2013-04-27 05:33:29
【问题描述】:
下面是我在 ASP MVC 3 控制器中使用的 Linq 查询,它尝试按状态代码的字母顺序对结果进行排序。 99% 的时间都可以正常工作,但我发现一些列表是这样无序的
对于我们在索引中列出的每家银行,我需要从辅助表BankListAgentId 中提取并显示我们与该特定银行合作的所有代理。大多数情况下,代理是根据状态代码正确排序的,但有几次它们像上面的屏幕截图一样无序。
foreach (var bank in banklist)
{
bank.BankListAgentId = (from a in db.BankListAgentId
where a.BankID == bank.ID
select a).OrderBy(x => x.StateCode, StringComparer.CurrentCultureIgnoreCase).ToList();
}
编辑
我尝试像这样将操作分成单独的行,但得到了相同的结果(99% 正确排序,1% 没有)
foreach (var bank in banklist)
{
var agent = (from a in db.BankListAgentId
where a.BankID == bank.ID
select a).ToList();
agent = agent.OrderBy(x => x.StateCode).ToList();
bank.BankListAgentId = agent.ToList();
}
【问题讨论】:
-
那么上面的截图是bank.BankListAgentId还是bank?
-
为了确定,我会使用数据库查询,然后才执行
OrderBy并返回List。 -
@ysrb:它属于
bank.BankListAgentID。我在帖子中添加了更好的描述。谢谢 -
@YoryeNathan:我假设你的意思是把它们分成单独的操作。我将我所做的添加到我的帖子中,但我收到了相同的结果。
-
您确认问题不在您的视野中吗?例如,通过在调试器中检查返回的集合是否已排序。您的“编辑”代码在技术上与原始代码(在数据库中排序)非常不同(在内存中排序)。很难想象两种技术(SQL Server 和 .NET)无法正确排序。
标签: c# asp.net-mvc-3 linq entity-framework-4.1