2013-08-16 1 views
3

다음 코드를 시도했습니다. NAME 필드를 기반으로 무작위로 행을 복제해야합니다.엔터티 프레임 워크를 사용하여 중복없이 임의의 행을 선택합니다 .4.5 mvc4

목록 목록 = db.Logos.Where (A => a.LogoName! = "empty.png").있는 OrderBy (R => Guid.NewGuid()) .GroupBy (A =>가. LogoName) . 선택 (g => g.FirstOrDefault()). Take (8) .ToList();

하지만 난 무작위로하지 않았다하지만 난 제대로 셔플 또 다른 코드를 시도했지만 = (에서 여기서 c db.Logos 에서 c를

목록 목록 아래에 적용 할 수있는 코드, 코드를 복제 한 .LogoName! = "empty.png" select c) .OrderBy (r => Guid.NewGuid()). (3) .ToList();

중복 행과 임의 행을 모두 선택하는 방법을 도와주세요.

답변

2

아래 사항을 시도해주세요.

var result = (from logo in db.Logos 
      where (logo.LogoName != "empty.png") 
      orderby logo.LogoName 
      select logo).Distinct(); 
+0

이 코드는 괜찮지 만 코드가있는 임의의 행을 선택해야합니다. – Sajith

+0

각 쿼리 실행마다 임의의 레코드를 원하십니까? –

+0

예 그럴 필요가 있습니다 – Sajith

0

그룹화하기 전에 주문을하고 있습니다. 그것은 주문을 완전히 잃어 버린다.

db.Logos 
.Where(a => a.LogoName != "empty.png") 
.GroupBy(a => a.LogoName) 
.Select(g => g.FirstOrDefault()) 
.OrderBy(r => Guid.NewGuid()) 
.Take(8) 
.ToList(); 

이 쿼리의 성능은 그리 좋아지지 않지만 그다지 중요한 관심사는 아닙니다. 작은 데이터 세트에서 빠를 것입니다.

관련 문제