Although you need a temporary variable for that, you can hide it by defining an extension method:
public static ReplaceEmptyWith(this string original, string replacement) {
return !string.IsNullOrEmpty(original) ? original : replacement;
}
Note that the temporary is still there - it's the first argument of the ReplaceEmptyWith
method.
Now you can simplify your code as follows:
lidID.idCountry = passportnode
.Descendants("COUNTRY")
.First()
.Value
.ReplaceEmptyWith("NONE");