У меня есть около 10 вызовов с одним и тем же оператором выбора. Это больше, чем просто FirstOrDefault, внутри него есть некоторая логика БД. Я не видел хорошего способа извлечь это в отдельный метод или оператор. Я приблизился к чему-то вроде этого:
static readonly Expression<Func<DbUser, User>> GetUser = (g) => new User {
Uid = g.uid,
FirstName = g.first_name,
LastName = g.last_name,
BigPicUrl = g.pic_big,
Birthday = g.birthday,
SmallPicUrl = g.pic_small,
SquarePicUrl = g.pic_square,
Locale = g.locale.Trim(),
//IsFavorite = g.FavoriteFriends1.Any(x=>x.uid==uid),
FavoriteFriendCount = g.FavoriteFriends.Count,
LastWishlistUpdate = g.WishListItems.OrderByDescending( x=>x.added ).FirstOrDefault().added
};
Проблема с этим методом заключается в том, что я не могу передать дополнительные параметры, такие как тот, который вы видите IsFavorite. Мне нужно иметь возможность делать такие вещи, но при этом иметь возможность использовать переменные для построения операторов запроса.