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 回答