式ツリー(Expression<Func<PlainAddress, bool>> predicate
)を構築して、HNibernateがクエリを実行するためのIQueryable.Where
関数に渡しています。私が渡すとき:式ツリーを構築すると、InvalidPathExceptionが発生する
predicate = y => y.Address.City == geoObject.Name;
すべてがうまくいきます。私が合格した場合:
var x = Expression.Parameter(typeof(PlainAddress));
Expression<Func<PlainAddress, string>> expression = y => y.Address.City;
predicate = Expression.Lambda<Func<PlainAddress, bool>>(
Expression.Equal(
Expression.Invoke(expression, x),
Expression.Constant(geoObject.Name)),
x);
を私が間違って何をやっている、次の例外
Invalid path: 'y.Address.City'
[.Where(NHibernate.Linq.NhQueryable`1[BPPDicsManager.Domain.Entities.PlainAddress],
Quote((60ee8287-3f42-426a-8c15-41f62f58623c,) => (String.op_Equality((y,) =>
(y.Address.City)60ee8287-3f42-426a-8c15-41f62f58623c, p1))),)]
を取得しますか?これら2つのオプションの違いは何ですか?
悲しいことに、この回答には4年間で4つのアップノートがありましたが、このような厳しい質問にどのように答えなければならないかという美しい例です。 –