3

下面是我在 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();
}
4

1 回答 1

0

由于您的 OrderBy() 位于 foreach(var bank in banklist) 循环的内部,因此它只会影响每个单独的查询,因为它在每次迭代中运行。在所有查询完成后,您需要一个 OrderBy 子句。

尝试这样的事情:

banklist.SelectMany(bank => bank.BankListAgentId).OrderBy(a => a.StateCode, StringComparer.CurrentCultureIgnoreCase).ToList();

于 2013-09-24T19:46:15.340 回答