3

yamlserializerライブラリを使用してYAMLノードを構築しようとしています。しかし、LINQステートメントを作成するのに苦労しています。

「Category」オブジェクトのリストがあります。これを「Cats」と呼びましょう。CategoryクラスにはIdとNameの両方があり、Yamlマッピングとして次のように表す必要があります。Cats [0] .Id:Cats [0] Name Cats [1] .Id:Cats [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;
......
4

2 に答える 2

2

何かのようなもの :

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

トリックを行う必要があります。

于 2012-10-16T09:26:07.067 に答える
1

アイテムごとにアイテムのシーケンス (この場合はペア) を単一のフラットなシーケンスに選択する場合は、次を使用しますSelectMany

YamlNode[] arr = blacklist.Categories.List
    .SelectMany(cat => new[] { (YamlNode)cat.Id, (YamlNode)cat.Name })
    .ToArray();
于 2012-10-16T09:36:29.850 に答える