下面是我在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();
}
答案 0 :(得分:0)
由于OrderBy()位于foreach(banklist中的var bank)循环的内部,因此它将仅在每次迭代中运行时影响每个单独的查询。所有查询完成后,您需要一个OrderBy子句。
尝试这样的事情:
banklist.SelectMany(bank => bank.BankListAgentId).OrderBy(a => a.StateCode,StringComparer.CurrentCultureIgnoreCase).ToList();