2011-07-31 8 views
8

이 2 개 문자열 필드와 구조체 S는를 선택합니다. 가장 효율적인 방법은 무엇입니까? 고유 제한이 결과 집합에있는 경우LINQ는 비어 있지 않은 문자열

감사합니다, 단지 위

답변

11
var myArray = S.Select(x => new [] { x.A, x.B }) 
       .SelectMany(x => x) 
       .Where(x=> !string.IsNullOrEmpty(x)) 
       .Distinct() 
       .ToArray(); 

작동 - 당신은 A의 세트에 고유 제한 조건을 필요로하는 경우 B의 작업 것이다 다음

var As = S.Select(x => x.A) 
      .Where(x=> !string.IsNullOrEmpty(x)) 
      .Distinct(); 
var Bs = S.Select(x => x.B) 
      .Where(x=> !string.IsNullOrEmpty(x)) 
      .Distinct(); 

var myArray = new [] {As, Bs} .SelectMany (x => x) .ToArray();

var myArray = As.Concat(Bs).ToArray(); 
+0

@Joey : 참으로 업데이트 - 가정은 A의 필요합니다 고유성과 B 그렇지 않으면 첫 번째 방법은 기록,'As.Concat (학사)'것이기 – BrokenGlass

+1

더 좋을 것이다, 그 결과 컬렉션이 아니다 'SelectMany'와 동일하게 수행 –

+0

@Claus Jørgensen : Doh! 그리고 그것의 훨씬 더 간단하고 읽기 쉽고 편집 된. – BrokenGlass

관련 문제