改进c# linq表达式的算法和语法

本文关键字:算法 语法 表达式 linq 改进 | 更新日期: 2023-09-27 18:09:47

我已经在c# .net 3.5中做了一些linq,感觉我应该能够做得更整洁一些。

是否有办法将这些合并到一个linq语句中?

条件如下

  1. 如果列表中包含count大于等于的元素然后我们可以使用list
  2. 按计数排序
  3. 按日期排序

我还想在计数上添加另一个条件,我可以将计数大于或等于阈值的所有项目都视为相同。我可以通过限制计数阈值来做到这一点,但我不希望阈值被改变。我有点难倒如何做到这一点,而不是暂时编辑记录,当我从数据库中得到它们,而不是保存它们。也就是说,当阈值为3时,列表(1,2,3,4,5)在按日期排序之前变成(3,3(4),3(5),2,1)。

var allFaves = m_favouriteRepo.Get(user);
if(allFaves.Any(t => t.Count >= threshold))
{
    var ordered = allFaves
                 .OrderByDescending(x => x.Count)
                 .ThenByDescending(x => x.SortDate)
                 .ToList();
}

谢谢尼尔。

改进c# linq表达式的算法和语法

if(allFaves.Any(t => t.Count >= threshold))
{
    var ordered = allFaves
                 .OrderByDescending(x => x.Count>=threshold?threshold:x.Count)
                 .ThenByDescending(x => x.DatesHistory)
                 .ToList();
}