Задача: необходимо представить объект в виде Dictionary<string,string>, где key — имя поля, value — значение поля.
Вариант решения:
static public Dictionary<string, string> ObjectToDictionary(object obj)
{
try
{
return (from x in obj.GetType().GetProperties() select x)
.Select(x => new
{
key = x.Name,
val = ( x.GetGetMethod()
.Invoke(obj, null) ?? string.Empty
).ToString()
})
.Where( x => // where можно убрать или дополнить своими условиями
(!x.val.Contains("EntitySet") &&
x.val.Length > 0 &&
x.key != x.val) ||
x.key == "id" )
.ToDictionary(x => x.key, x => x.val);
}
catch (Exception ex)
{
return new Dictionary<string,string>();
}
}

