Was verursacht den Linq-Fehler: Diese Methode kann nicht in einen Geschäftsausdruck übersetzt werden?

Ich habe eine Reihe von Linq to Entity-Methoden, die die gleiche select-Anweisung hatten, daher dachte ich, ich wäre schlau und würde das in eine eigene Methode aufteilen, um Redundanz zu reduzieren ... aber als ich versuchte, den Code auszuführen, bekam ich die folgender Fehler ...

Diese Methode kann nicht in einen Geschäftsausdruck übersetzt werden

Hier ist die Methode, die ich erstellt habe ...

public User GetUser(DbUser user, long uid)
{
    return new User
    {
        Uid = user.uid,
        FirstName = user.first_name,
        LastName = user.last_name
    };
}

Und rufe eine Methode wie diese auf ...

public User GetUser(long uid)
{
    using (var entities = new myEntities()) {
        return
            entities.DbUsers.Where( x => x.uid == uid && x.account_status == ( short )AccountStatus.Active ).
                Select( x => GetUser( x, uid ) ).FirstOrDefault( );
    }
}

UPDATE: hier ist der Code, der inline funktioniert

public User GetUser(long uid, long uid_user)
        {
            using (var entities = new myEntities())
            {

                var q = from u in entities.DbUsers
                        where u.uid == uid_user
                        select new User
                        {
                            Uid = u.uid,
                            FirstName = u.first_name,
                            LastName = u.last_name,
                            BigPicUrl = u.pic_big,
                            Birthday = u.birthday,
                            SmallPicUrl = u.pic_small,
                            SquarePicUrl = u.pic_square,
                            Locale = u.locale.Trim(),
                            IsFavorite = u.FavoriteFriends1.Any(x => x.uid == uid),
                            FavoriteFriendCount = u.FavoriteFriends.Count,
                            LastWishlistUpdate = u.WishListItems.OrderByDescending(x => x.added).FirstOrDefault().added,
                            Sex = (UserSex)u.sex
                        };

                var user = q.FirstOrDefault();
                user.DaysUntilBirthday = user.Birthday.DaysUntilBirthday();
                return user;
            }
        }

Antworten auf die Frage(6)

Ihre Antwort auf die Frage