Где предложение с использованием лямбда-селектора свойств - PullRequest
0 голосов
/ 12 октября 2011

Я хочу иметь возможность обновить объект, найдя его совпадение в списке объектов, которые я получил из базы данных.Я могу сделать это с отражением - но я уверен, что должен быть способ получить селектор свойств в предложении Where.

Это то, что я хочу назвать ...

MyObject = GetRefreshedObject(MyObject, RefreshedObjects, () => ID);

Но я немного застрял в методе!

    public static TE GetRefreshed<TE, P>(TE entity, IEnumerable<TE> refreshed, Expression<Func<TE, P>> selector) where TE : class
    {
        if (entity == null) return null;

        return refreshed.Where(x => x.[Selector == entity.Selector]).FirstOfDefault();

        //The square bracket bits obviously don't work but hopefully show what I'm trying to achieve!

    }

1 Ответ

3 голосов
/ 12 октября 2011

Если вы просто работаете с Lambdas и IEnumerables, вам действительно нужен анализ выражения? Используйте лямбда изначально. Это потребует небольшого изменения вашего телефонного кода:

var refreshedObject = GetRefreshedObject(MyObject, RefreshedObjects, x => x.ID);

Реализация метода будет:

public static TE GetRefreshed<TE, P>(TE entity, IEnumerable<TE> refreshed, Func<TE, P> selector)
{
  P myObjectId = selector(entity);
  return refreshed.FirstOrDefault(refresh => selector(refresh).Equals(myObjectId));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...