Linq Orderby'字符串包含'表现不尽如人意

时间:2016-06-17 15:05:35

标签: c# linq

我有一个奇怪的问题,试图根据列表是否包含特定的字符串值来排序。在一个视图中,我在我的viewmodel上有一个列表,我想要显示那些没有" snoozed"首先,然后根据他们的标题是否包含单词" order"来排序。所以我的代码如下:

var sortedFaults = accountFaultContainer.Faults.Values.OrderBy(f => f.IsSnoozed).ThenByDescending(f => f.Title.ToLower().Contains("order"));

然后我循环浏览此列表并添加“故障”#39;使用foreach循环到我的桌子......

foreach (Fault fault in sortedFaults)

这在某些情况下有效,但在其他情况下无效。我一直试图挑出那些表现不尽如人意的但没有明显区别的。例如,在一次案例中,标题为"完全失败的同步"在"失败的订单同步"之前和之后都订购了。但事实并非总是行为不端;在某些表格中,订购工作正常。

以前有人遇到过类似的问题吗?或者是否有一些明显我不知道的东西?我在这里挠头!

1 个答案:

答案 0 :(得分:0)

您先通过IsSnoozed订购,以便优先考虑。

 .OrderBy(f => f.IsSnoozed)
 .ThenByDescending(f => f.Title.ToLower().Contains("order"));

反过来试试:

 .OrderBy(f => f.Title.ToLower().Contains("order"))
 .ThenByDescending(f => f.IsSnoozed);