Как передать анонимное свойство через лямбду в универсальную функцию? - PullRequest
0 голосов
/ 02 апреля 2011

Я хочу передать анонимное свойство с помощью лямбды в общую функцию и получить к ней доступ.
И как я могу получить доступ к собственности внутри.

using (CommentsRepository commentsRepository = new CommentsRepository())
{
   var comments = commentsRepository.GetAllComments();

   Foo<Comment>(comments, 0,com=>com.ID); //Comment is an  EF entity
}

public static void Foo<TObject>(IEnumerable<TObject> list, int iCurID, <Func<TObject, TProperty> property) where TObject : class
{       
   foreach (var cat in list.Where(/*How to access the property*/==iCurID)
   {
          int x = cat.property;
   }
 }

1 Ответ

3 голосов
/ 02 апреля 2011

Вы просто звоните делегату:

public static void Foo<TObject>
    (IEnumerable<TObject> list, 
     int iCurID,
     Func<TObject, int> propertySelector) where TObject : class
{       
   foreach (var cat in list.Where(x => propertySelector(x) == iCurID))
   {

   }
}

Обратите внимание, что мне пришлось изменить тип делегата на Func<TObject, int>, иначе вы не сможете сравнить его с iCurID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...