Entity Framework는 고유 이름을 선택합니다


답변:


271

람다 식 사용하기

 var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();

1
어쩌면 까다로운 질문이지만 모든 주소를 C # 코드 계층으로 반환 한 다음 필터링하거나 고유 한 값만 반환하도록 데이터베이스 서버에 적절한 쿼리를 전달합니까?
DA

51

이 시도:

var results = (from ta in context.TestAddresses
               select ta.Name).Distinct();

이것은 당신에게 줄 것이다 IEnumerable<string>-당신은 .ToList()그것을 얻기 위해 전화 할 수있다 List<string>.


1
그렇게하면 그룹화보다 성능이 향상됩니다. 고유 : SQL Server 실행 시간 : CPU 시간 = 0ms, 경과 시간 = 50ms 그룹화 : SQL Server 실행 시간 : CPU 시간 = 0ms, 경과 시간 = 112ms
Andre Mendonca

24

@alliswell이 보여주는 방식 은 완전히 유효하며 다른 방법이 있습니다! :)

var result = EFContext.TestAddresses
    .GroupBy(ta => ta.Name)
    .Select(ta => ta.Key);

누군가에게 도움이되기를 바랍니다.


1
여러 열을 선택해야했기 때문에 이것은 매우 유용했습니다.
mamashare

16
DBContext.TestAddresses.Select(m => m.NAME).Distinct();

여러 열이있는 경우 다음과 같이하십시오.

DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).Distinct();

이 예에서는 중복 된 CategoryId 및 CategoryName이 없습니다. 이것이 도움이 되었기를 바랍니다.


4

엔티티 프레임 워크 고유 이름을 선택하십시오.

여러 테이블을 사용하는 뷰를 사용하고 있고이 경우 고유하게 적용하려는 경우 먼저 변수에 값을 저장해야하며 다음과 같이 해당 변수에 고유성을 적용 할 수 있다고 가정하십시오.

public List<Item_Img_Sal_VIEW> GetItemDescription(int ItemNo) 
        {
            var Result= db.Item_Img_Sal_VIEW.Where(p => p.ItemID == ItemNo).ToList();
            return Result.Distinct().ToList();
        }

아니면이 간단한 예를 시도 할 수 있습니다

Public Function GetUniqueLocation() As List(Of Integer)
          Return db.LoginUsers.Select(Function(p) p.LocID).Distinct().ToList()
End Function

안녕하세요, 테이블 에서이 작업을 수행하면 오류가 발생합니다-> 문자열을 IEnumreable로 변환 할 수 없습니다. NVARCHAR을 포함하는 테이블 열의 고유 값으로 드롭 다운 목록을 채울 수 있도록 목록을 얻는 방법을 보여 줄 수 있습니까? EF DB에서.
aggie

3



예를 들어 Select (). Distinct () 를 사용하십시오.

DBContext db = new DBContext();
var data= db.User_Food_UserIntakeFood .Select( ).Distinct();

2

ORDER BY items must appear in the select list if SELECT DISTINCT오류 를 피하기 위해 최선의 방법은

var results = (
    from ta in DBContext.TestAddresses
    select ta.Name
)
.Distinct()
.OrderBy( x => 1);

1

엔티티 프레임 워크 고유 이름을 선택하십시오.

각 그룹의 특정 열의 모든 첫 번째 데이터를 원한다고 가정하십시오.

 var data = objDb.TableName.GroupBy(dt => dt.ColumnName).Select(dt => new { dt.Key }).ToList();

            foreach (var item in data)
            {
                var data2= objDb.TableName.Where(dt=>dt.ColumnName==item.Key).Select(dt=>new {dt.SelectYourColumn}).Distinct().FirstOrDefault();

               //Eg.
                {
                       ListBox1.Items.Add(data2.ColumnName);                    
                }

            }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.