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

时间:2011-09-26 15:30:10

标签: c# .net linq nhibernate optimization

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

有没有办法将它组合成一个linq语句。

条件如下

  1. 如果列表包含count大于或等于的元素 然后我们可以使用列表
  2. 按计数排列列表
  3. 按日期排序列表
  4. 我还想在计数中添加另一个条件,我可以处理计数大于或等于阈值相同的所有项目。我可以通过将计数限制在阈值来做到这一点,但我不希望在不改变阈值的情况下。除了在从数据库中获取记录并且不保存记录时临时编辑记录之外,我对如何执行此操作感到有点困惑。即在按阈值排序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();
    }
    

    由于 尼尔

1 个答案:

答案 0 :(得分:3)

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