Причина некомпиляции: &&
вычисляется до =
.И &&
, очевидно, не является допустимой операцией для этих типов.
Это можно исправить с помощью пары скобок.Затем .HasValue
может быть применено к результату присвоения (который является объектом или значением, которое было присвоено ).
title = (propTitle = x.GetProperty("title")).HasValue ? propTitle.Value : null;
Редактировать: выможет сделать это выражение короче и более читаемым, определив метод расширения.Если вы используете конструкцию в нескольких местах, это также уменьшит избыточность и беспорядок.
Пример:
namespace Your.Project.Helpers
{
public static class PropertyHelper
{
// use actual type (or interface)
public static string GetValueOrDefault(this Property p)
{
return p.HasValue ? p.Value : null;
}
}
}
Использование:
using Your.Project.Helpers;
...
var title = x.GetProperty("title").GetValueOrDefault();