你如何修剪Linq中可能为null的字符串?

时间:2011-07-18 15:42:52

标签: c# linq windows-phone-7

我在linq中有一个从xml加载的字符串,该属性或元素是可选的,但我想修剪字符串,因为xml文件可以像这样手动编写。

<text>Hello World</text>

或者像这样

<text>
    hello world
<text>

后者会在之前和之后创建我想修剪的新行字符。

我试着做

QuestionText = (string)query.Element("text").ToString().Trim()

但是当该元素不存在时,该应用程序会崩溃。

6 个答案:

答案 0 :(得分:2)

QuestionText = query.Element("text")!=null ? query.Element("text").Value.Trim() : string.Empty;

答案 1 :(得分:1)

WP7中有可能吗?

QuestionText = ((string)query.Element("text") ?? string.Empty).Trim();

干杯

答案 2 :(得分:1)

我可能想要为XElement

制作扩展方法
public static class XElementExtensions
{
  public static string TrimmedValue(this XElement elem)
  {
     if(elem == null)
        return null; // or, possibly String.Empty depending on your requirement.
     if(String.IsNullOrEmpty(elem.Value))
        return elem.Value
     return elem.Value.Trim();
  }
}

用法:

QuestionText = query.Element("text").TrimmedValue()

答案 3 :(得分:1)

如果你可以在null上返回一个空字符串,那该怎么办?

  

QuestionText =(query.Element(“text”)+“”)。修剪()

[我使用其他地方转换空字符串,但当然因为关于如何处理nulls / empty的问题不明确,这可能与你需要的不同]

答案 4 :(得分:0)

首先,不要将字符串强制转换为字符串。

这个怎么样......

string QuestionText = "";
if(query.Element("text") != null)
   QuestionText = query.Element("text").ToString().Trim();

答案 5 :(得分:0)

QuestionText = Convert.ToString(query.Element("text")).Trim();