表現に問題がある
私はエンティティを持っています
public class User{
public string Username{get;set;}
public int PhoneNumber{get;set;}
public string FIrstName{get;set;}
public string LastName{get;set;}
}
そして私はDTOを持っています
public class DTOUser{
public string Username{get;set;}
public int PhoneNumber{get;set;}
public string FIrstName{get;set;}
public string LastName{get;set;}
}
次に、スニペットコードジェネリックがあります
public IList<DTOUser> SelectAll(Expression<Func<DTOUser, bool>> predicate)
{
using (var adc = _conn.GetContext())
{
// what should I do ?? so i can convert Predciate to get all values from Users (Entity)
//it generates an error because predicate can't be cast into Entity User
// var users = adc.Users.All(predicate);
}
}
LAMBDA式を渡してDTOUserの一覧を取得したかった
accountrepo.SelectAll( user => user.firstname.equals ("sample"));
この問題を調査した結果、DTOUser と User は型が異なるため、Expression をある型から別の型にキャストするのは難しいという結論に達しました。
Jon Skeet によって 1 つの解決策が提案されました。
Expression<Func<T, DateTime>> を Expression<Func<T, object>> にキャストする方法
しかし、この解決策では、DTOUser から User に各値をマップする必要があるように思われるため、DTOUser に 15 を超えるプロパティが含まれているため、これにより複雑になることはありません。
誰かが私を助けることができますか?