2011-02-04 36 views
4

你好,我有以下问题,是否有可能做一个内联if语句?MonoTouch Linq to XML如何使内联IF语句

var contact= new XElement("Contact", 
               new XAttribute("id", id.ToString()), 
               new XElement("ContactData", 
                  new XElement("Prefix", person.Prefix), 
                  new XElement("FirstName", person.FirstName) 
               ); 

因为有时person.x可能为空,它会给我带来错误。

在此先感谢您的帮助。

回答

5

你可以尝试这样的事情

var contacts = new XElement("Contact", 
     new XAttribute("id", id.ToString()), 
     new XElement("ContactData", 
      new XElement("Prefix", person.Prefix == null ? "" : person.Prefix), 
      new XElement("FirstName", person.FirstName == null ? "" : person.FirstName)); 

语法(condition ? truevalue : falsevalue)

+2

person.Prefix == NULL? “”:person.Prefix和person.Prefix是一样的。 “”如果你不知道名称(空合并运算符),它曾经是一个痛苦:) – Ian 2011-02-04 15:40:54

+0

好吧,它的工作,但它给了我空标签 – 2011-02-04 15:42:38

0

是它要发生,如果person.xnull什么?

如果您希望它默认值,您可以将person.Prefix(例如)包装在一个方法中,该方法接受字符串并返回字符串或一些可接受的默认值。

否则,就是:

string x = null; 
string y = x ?? "f"; 

y变得"f"如果xnull,否则得到的x值。

0

您应该使用null-coalescing operator为默认值,如果你不希望他们留null

var contact = new XElement ("Contact", 
    new XAttribute ("id", id.ToString()), 
    new XElement ("ContactData", 
     new XElement("Prefix", person.Prefix ?? string.Empty), 
     new XElement("FirstName", person.FirstName ?? string.Empty) 
    ) 
);