C # Как включить <T>и выражение> селектор в T.Select (селектор)? - PullRequest
0 голосов
/ 16 декабря 2011

Ниже показано, как далеко я это сделал. Мне нужно отправить Expression<Func<T, string>> в качестве параметра вместо Func<T,string> в функцию Get, и у меня все еще есть Select (). Это легко возможно? Форматируется для LinqPad .

void Main()
{
    // Setup sample data in wholelist
    var wholelist = new List<Example>();
    for (var a = 0; a < 10; a++)
    {   var t = new Example { id = a.ToString(), name = a.ToString() };
        wholelist.Add(t);
    }

    // Do the real work
    var names = Get<Example>( wholelist, p => p.name );
    // LinqPad shows content
    names.Dump();
}

public class Example
{
    public string id {get;set;}
    public string name {get;set;}
}

public static List<string> 
    Get<T>(IEnumerable<T> source, Func<T, string> selector)
{    
    var list = source.Select<T,string>(selector).ToList();
    return list;
}

Причина в том, что у нас уже есть множество функций, вызывающих эту функцию с помощью Expression<Func<T,string>>.

1 Ответ

2 голосов
/ 16 декабря 2011

Вы пробовали выражение. Компиляция?

public static List<string> Get<T>(IEnumerable<T> source, Expression<Func<T, string>> selector)
{
    var list = source.Select<T, string>(selector.Compile()).ToList();
    return list;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...