2012-10-16 4 views
3

yamlserializer 라이브러리를 사용하여 YAML 노드를 작성하려고했습니다. 그러나 LINQ 문을 작성하는 데 어려움을 겪고 있습니다.선택당 여러 값을 가진 LINQ 구축 배열

"Category"개체 목록을 가지고 있는데, "Cats"라고 부를 수 있습니다. Category 클래스는 Yaml 매핑과 같이 다음과 같은 방식으로 나타낼 필요가있는 ID와 이름을 모두 가지고 있습니다. 고양이 [0] .ID : 고양이 [0] 이름 고양이 [1] .ID : 고양이 [1] .name을 ... 라이브러리와 함께 일하지 않은 사람들을 위해

. YamlMapping 클래스에는 YamlNode 객체의 배열을 사용하는 생성자가 있습니다. YamlNode는 YamlMapping을 포함한 모든 유형의 노드가 상속하는 추상 클래스입니다.

new YamlMapping 
(
    "Categories", new YamlMapping (
    (from cat in blacklist.Categories.List select 
    (YamlNode)cat.Id AND (YamlNode)cat.Name).ToArray()); 
) 

위의 내용은 분명히 작동하지 않으며 원하는 결과를 얻는 방법이 있는지 궁금합니다. 같은 효과를 얻기 위해 LINQish (?) 방식이 더 있는지 궁금해하고 있었지만, 전에 배열을 구성하는 것이 가능했을 것입니다.

다른 말로하면 어레이 빌드는 다음과 같아야합니다. 같은

YamlNode[] arr; 
arr[0] = Cats[0].Id 
arr[1] = Cats[0].Name; 
arr[2] = Cats[1].Id; 
arr[3] = Cats[1].Name; 
...... 

답변

2

뭔가 :

(from cat in blacklist.Categories.List select 
new YamlNode[] { (YamlNode)cat.Id, (YamlNode)cat.Name }).SelectMany(x => x).ToArray()); 

트릭을 할해야합니다. 단일 평면 순서로 항목 당 항목 (이 경우, 한 쌍의) 시퀀스를 선택합니다

1

, SelectMany 사용

YamlNode[] arr = blacklist.Categories.List 
    .SelectMany(cat => new[] { (YamlNode)cat.Id, (YamlNode)cat.Name }) 
    .ToArray(); 
관련 문제