2014-12-04 5 views
0

다음과 같은 구조로 중첩 개체가 있습니다. 모델 A에 모델 B 목록이 포함되어 있습니다.이를 평평하게하는 빠른 방법이 있는지 궁금합니다.복잡한 모델 병합

예 :

public class Customer 
{ 
public int ID {get; set;} 
public string Name {get; set;} 
public List<int> OrderNumber { get; set; } 
} 

이것은 OrderNumber를

var list = customerList.Select(x => new { x.ID, x.Name, x.OrderNumber}).Where(x => x.OrderNumber!= null).SelectMany(s => s.OrderNumber).ToList(); 

에게 나에게 단지의 편평한 목록을 제공이 나에게 각 고객 레코드

에 대한 OrderNumber를의 목록을 포함, 고객 정보의 목록을 제공
var list = customerList.Select(x => new { x.ID, x.Name, x.OrderNumber}).ToList(); 

나는 고객 정보의 평평한 목록을 반환하는 빠른 방법을 찾고 있습니다. ordernumber의 평평한 목록을 문자열로 ong. 이런 식으로 뭔가 ...

ID --- 이름 ---- OrderNumber를

123 JohnDoe에 1, 2, 3

564 JaneDoe 1, 2

내가 LINQ를 사용하여 같은 느낌 SelectMany가 작업을 수행 할 수는 있지만 올바르게 수행하는 방법을 모릅니다. 위와 같이 원하는 결과를 얻었으므로 한 문장으로 조합하는 방법이 필요합니다. 나는 내가 원하는 것을 얻기 위해 루프를 만들고 새로운리스트를 만들 수 있다는 것을 알고있다. 그것은 세계의 끝이 아니지만 LINQ에 대해 더 알고 싶었습니다. 어떤 조언을 부탁드립니다. 감사.

난 항상 쿼리 구문에 쉽게 이런 종류의 일을 찾을

답변

0

이 시도 :

var query = from cust in customerList 
      from orderNo in cust.OrderNumber 
      select new { cust.ID, cust.Name, OrderNumber = orderNo }; 

UPDATE 귀하의 의견 또한

, 그냥 원하는 경우 주문 번호는 쉼표로 구분 된 문자열로 마지막 열은 다음을 수행 할 수 있습니다.

var query = customerList.Select(x => new{ x.ID, x.Name, OrderNos = string.Join(",", x.OrderNumber)}); 
+0

이것은 작동하지 않습니다. 이 문제를 조사해 주셔서 감사합니다. 방금 실수를 저지른 것을 깨달았습니다. 내가 그것을 업데이트하자. – NKD

+0

@ NKD 작동하지 않는 방법으로 설명 할 수 있다면 문제를 해결할 수 있습니다. –

+0

@NKD 귀하의 업데이트 된 고객 클래스와 일치하도록 쿼리를 수정했습니다. –