我有一个奇怪的问题,试图根据列表是否包含特定的字符串值来排序。在一个视图中,我在我的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)
这在某些情况下有效,但在其他情况下无效。我一直试图挑出那些表现不尽如人意的但没有明显区别的。例如,在一次案例中,标题为"完全失败的同步"在"失败的订单同步"之前和之后都订购了。但事实并非总是行为不端;在某些表格中,订购工作正常。
以前有人遇到过类似的问题吗?或者是否有一些明显我不知道的东西?我在这里挠头!
答案 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);