我一直在尝试使用yamlserializer库构建一个YAML节点。但我在构建LINQ语句时遇到了困难。
我有一个"类别"对象,我们称之为" Cats",Category类同时具有Id和Name,需要以下列方式表示为Yaml Mappings。 猫[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;
......
答案 0 :(得分:2)
类似的东西:
(from cat in blacklist.Categories.List select
new YamlNode[] { (YamlNode)cat.Id, (YamlNode)cat.Name }).SelectMany(x => x).ToArray());
应该这样做。
答案 1 :(得分:1)
如果要将每个项目的序列(在本例中为一对)选择为单个平面序列,请使用SelectMany
:
YamlNode[] arr = blacklist.Categories.List
.SelectMany(cat => new[] { (YamlNode)cat.Id, (YamlNode)cat.Name })
.ToArray();