Was ist der beste Weg, um alle PropertyInfo von Elementen in einem Lambda-Ausdruck zu erhalten.Get Propertyinfo von Lambda-Ausdruck, schlägt aber mit Int
Ich möchte einen Filter für ein XML-Feld in einer SQL-Datenbank festlegen.
var FilterBase = new FilterBase<SimpleItemSubObject>()
.SetSimpleFilter(x => x.ID, 123)
.SetSimpleFilter(x => x.Test.Name, "demo3");
im Analysator, ich bin in der Lage, die Propertyinfo für die Name-Eigenschaft zu bekommen.
internal IEnumerable<PropertyInfo> GetExpressionList()
{
return GetPropertyListfor(lambda.Body as MemberExpression);
}
private IEnumerable<PropertyInfo> GetPropertyListfor(MemberExpression body)
{
var result = new List<PropertyInfo>();
if (body != null && body.Expression != null)
{
result.AddRange(GetPropertyListfor(body.Expression as MemberExpression));
result.Add((body as MemberExpression).Member as PropertyInfo);
}
return result;
}
Dies gibt die Eigenschaft zurück, wenn es sich um eine String-Eigenschaft handelt. aber im Falle eines int schlägt der Analysator fehl, weil Lambda eine Konvertierungsfunktion hinzugefügt hat.
{x => Convert(x.ID)}
Es wurde eine Konvertierungsfunktion hinzugefügt.
Also was ist die beste Methode, um die Propertyinfo in diesem Fall für die x.ID. und wie verhindere ich die Verwendung der Konvertierungsfunktion
Dank. für deine Antwort. Ich habe den Konvertiten entkleidet, wie du gesagt hast. Aber danke für die Info über den Grund, warum Convert hinzugefügt wird. – Frans