2011-09-26 2 views
-1

나는 linq 비트 C# .net 3.5 일을하고 있었고 다음 조금 더 neater 할 수 있어야한다고 생각합니다.알고리즘 및 구문을 C#을 linq 표현에 대한

이 방법을 단일 linq 문에 결합 할 수 있습니까? 목록이 카운트가 임계 값 우리 목록

  • 오더 카운트
  • 를 주문에 의해 목록을 사용할 수 보다 크거나 같은 원소를 포함하는 경우

    1. 다음과 같이

      조건은 날짜로 목록

    또한 임계 값보다 크거나 같은 모든 항목을 처리 할 수있는 다른 조건을 추가하고 싶습니다. 같은. 카운트를 임계 값으로 제한하여이 작업을 수행 할 수 있지만 임계 값을 변경해야하는 경우를 원하지 않습니다. 나는 이것을 데이터베이스에서 가져 와서 저장하지 않을 때 레코드를 임시로 편집하는 것 이외에는 어떻게해야하는지에 대해 다소 혼란 스럽다. 즉 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

    은'모든()는 '부울을 반환합니다. '! = null'은 의미가 없습니다. – SLaks

    +0

    이 linq-to-sql, 엔티티 프레임 워크 또는 둘 다 아닌가요? nHibernate를 사용하는 – AakashM

    +0

    . 죄송합니다! = null – Neil

    답변

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

    또는 OrderByDescending (x => Math.Min (x.Count, threshold))', 사용되는 LINQ 공급자에 따라. – LukeH

    +0

    감사합니다. 이것은 티켓처럼 보입니다. – Neil

    관련 문제