2014-10-21 6 views
0

Как создать функцию, а затем передать ее методу OrderBy?LINQ OrderBy - параметр передачи

Я хочу создать условия OrderBy на основе строки, а затем передать его другому методу, который будет возвращать отсортирован Collection<Venue>

Так что-то вроде этого:

string sortby; 
var function; 
if (sortby == "name") 
    // function = (p => p.Name) 
else if (sortby == "city") 
    // function = (p => p.City) 
Collection<Venue> venues = GetVenue(function); 

и т.д. GetVenue называет где-то:

return venues.OrderBy(function); 

Какой тип я должен использовать, и как его создать?

+0

Используйте 'IComparable' класс для сортировки http://msdn.microsoft.com/en-us/library/system.icomparable%28v=vs. 110% 29.aspx –

+0

Если вы наведите указатель мыши на вызов функции, вы увидите синтаксис, включающий требуемый тип аргумента (при условии, что Visual Studio). –

ответ

1

Предполагая, что оба свойства Name и City вашего класса Центры имеют тип string, ваша функция должна быть типа Func<Venue, string> для этой работы.

Func<Venue, string> function; 

И использовать его как это:

function = new Func<Venue, string>(p => p.Name);