Linq查询null检入数据源

时间:2014-07-14 00:07:56

标签: c# asp.net xml linq xelement

我在这里搜索了很多问题,在这种情况下无法找到答案。我必须做一些完全错误的事情,因为这似乎应该是相当简单的事情。如果还有另一个问题我没有发现是否有人能指出我正确的方向,我真的很感激。

我有一个Insert方法,可以将类别guid插入博客文章中。我试图一次性插入整个博客文章。有问题的代码是:

new XElement("categories", blog.categories.Select(x => new XElement("category", x))),

并且它有效,只要blog.categories不为null,但是当它为null时它就会出错。博客类别是一个guid数组。如果它是一个字符串我会放一个??,但除了一个字符串之外,它不能用于其他任何东西。

一切都很合适,添加博客似乎是错误的,然后再次找到它,检查是否为空,如果不是单独添加元素。任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:3)

你是什么意思??对非字符串不起作用?是的确如此。

(blog.categories ?? new Guid[0]).Select(x => new XElement("category", x))

它不是最好的,但它可能比任何其他选择都好,因为正如你所说的创建博客实例然后添加这个事实可能是一个麻烦。

当然,您也可以在博客之前创建类别XElement:

XElement categories;
if(blog.categories == null)
{
    categories = new XElement("categories");
}
else
{
    categories = new XElement("categories", blog.categories.Select(x => new XElement("category", x)));
}

然后稍后再引用categories代替你现在所做的事情。