IQueryable concat导致订单被忽略

时间:2019-03-14 22:19:33

标签: c# linq

我有两个订购的IQueryable

var stickyMessages = GetStickyMessages(binUser, filterModel, messages);
var nonSticky = GetNonStickyMessages(binUser, messages);

我想做的就是将它们合并成一个IQueryable,同时保持原始顺序不变。

问题是,如果我像这样使用Concat,则该顺序将以某种方式被忽略:

var messagesCombined = stickyMessages.Concat(stickyMessages);
return messagesCombined;

如果我简单地退回nonStickystickMessages,则订单保持不变。我不知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

因为在对两个枚举数进行归并之后,结果始终不是井井有条,这就是为什么大多数IQueryable“翻译器”在归结之前都忽略排序的原因。在封装它们之后,您必须重新声明其顺序。

另请参阅Order by does not work with Concat() in LINQ