복붙노트

[SQL] 테이블의 한 필드를 기준으로 Linq에있는 고유

SQL

테이블의 한 필드를 기준으로 Linq에있는 고유

내가 (그래서 테이블에서 전체 중복 기록을 필요로하지 않는다) 테이블의 한 필드를 기준으로 결과를 얻을 수 Linq에에 .distinct 사용하려합니다.

다음으로 나는 별개 사용하여 기본 쿼리를 작성 알고 :

var query = (from r in table1
orderby r.Text
select r).distinct();

하지만 난 r.text 중복되지 않는 결과를해야합니다.

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    table1.GroupBy(x => x.Text).Select(x => x.FirstOrDefault());
    

    이 뜻 그룹이 텍스트로 테이블 및 텍스트가 구별되는 행 그룹으로부터 얻어진 각각의 첫번째 행을 사용한다.

  2. ==============================

    2.MoreLinq 당신이 사용할 수있는 DistinctBy 방법이 있습니다 :

    MoreLinq 당신이 사용할 수있는 DistinctBy 방법이 있습니다 :

    그것은 당신이 할 수 있습니다 :

    var results = table1.DistictBy(row => row.Text);
    

    다음과 같은 방법 (인수 검증의 짧은)의 구현은 다음과 같습니다

    private static IEnumerable<TSource> DistinctByImpl<TSource, TKey>(IEnumerable<TSource> source,
        Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)
    {
        HashSet<TKey> knownKeys = new HashSet<TKey>(comparer);
        foreach (TSource element in source)
        {
            if (knownKeys.Add(keySelector(element)))
            {
                yield return element;
            }
        }
    }
    
  3. ==============================

    3.당신이 원하는 경우로 사운드 :

    당신이 원하는 경우로 사운드 :

    table1.GroupBy(x => x.Text)
          .Where(g => g.Count() == 1)
          .Select(g => g.First());
    

    텍스트 고유 곳 행을 선택합니다.

  4. ==============================

    4.엔티티 프레임 워크와 System.NotSupported 예외에 리드 위의 다니엘 Hilgarth의 대답. 엔티티 프레임 워크로, 그것은되어야합니다 :

    엔티티 프레임 워크와 System.NotSupported 예외에 리드 위의 다니엘 Hilgarth의 대답. 엔티티 프레임 워크로, 그것은되어야합니다 :

    table1.GroupBy(x => x.Text).Select(x => x.FirstOrDefault());
    
  5. ==============================

    5.이 주제에 논의가 많이 있습니다.

    이 주제에 논의가 많이 있습니다.

    현재 위치 중 하나를 찾을 수 있습니다 :

    가장 인기있는 제안 중 하나는 @Servy과 같은 매개 변수가 지적한 것처럼 람다 식을 복용 구별 방법이었다.

    C 번호의 수석 건축가, 앤더스 헤 즐스 버그는 여기에 솔루션을 제안했다. 프레임 워크 디자인 팀은 람다 소요 구별 방법의 과부하를 추가하지 않기로 결정 이유도 설명.

  6. ==============================

    6.내가 찾은 바로는, 쿼리는 대부분 정확합니다. 그냥 모든 "r.Text을 선택"으로 "를 선택 R"을한다 변경하고 그 문제를 해결해야한다. 이 MSDN이 작동하는 방법을 문서화하는 방법이다.

    내가 찾은 바로는, 쿼리는 대부분 정확합니다. 그냥 모든 "r.Text을 선택"으로 "를 선택 R"을한다 변경하고 그 문제를 해결해야한다. 이 MSDN이 작동하는 방법을 문서화하는 방법이다.

    전의:

        var query = (from r in table1 orderby r.Text select r.Text).distinct();
    
  7. ==============================

    7.

    data.Select(x=>x.Name).Distinct().Select(x => new SelectListItem { Text = x });
    
  8. ==============================

    8.이 코드를 시도 :

    이 코드를 시도 :

    table1.GroupBy(x => x.Text).Select(x => x.FirstOrDefault());
    
  9. ==============================

    9.이 시도 할 수 있습니다 : table1.GroupBy (t => t.Text) ALL 기타 사항 서보 -OFF (모양 => shape.r)를) 고유 ();.

    이 시도 할 수 있습니다 : table1.GroupBy (t => t.Text) ALL 기타 사항 서보 -OFF (모양 => shape.r)를) 고유 ();.

  10. from https://stackoverflow.com/questions/14321013/distinct-in-linq-based-on-only-one-field-of-the-table by cc-by-sa and MIT license