Я пытаюсь найти, как заставить это работать с различными типами. Заранее благодарим за помощь!Проблема преобразования выражения LINQ
public static void Main()
{
GetKeySelector("String01"); // OK
GetKeySelector("Date01"); // ArgumentException: Expression of type 'System.Nullable`1[System.DateTime]' cannot be used for return type 'System.String'
GetKeySelector("Integer01"); // ArgumentException: Expression of type 'System.Int32' cannot be used for return type 'System.String'
}
private static Expression<Func<Project,string>> GetKeySelector(string propertyName)
{
var paramExpr = Expression.Parameter(typeof (Project), "p");
var property = Expression.Property(paramExpr, propertyName);
var finalLambda = Expression.Lambda<Func<Project, string>>(property, paramExpr);
return finalLambda;
}
class Project
{
public DateTime? Date01 {get;set;}
public int Integer01 {get;set;}
public string String01 {get;set;}
}
Что вы подразумеваете под разными типами? Как взять в родовом, а не в «Проект»? – ryanyuyu
Ну, ваша func возвращает строку, но вы пытаетесь вернуть DateTime или целое число. Какое желаемое поведение? Вы хотите преобразовать возвращаемое свойство в строку перед рукой? –