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;
}
}