您可以鏈Add
的,或者你應該能夠使用Restrictions.Or
兩個InsensitiveLike
的:
query.Add(Restrictions.InsensitiveLike(Projections.Property<Order>(a => a.OrderId1), OrderId2, MatchMode.Anywhere))
.Add(Restrictions.InsensitiveLike(Projections.Property<Order>(a => a.OrderId2), OrderId1, MatchMode.Anywhere));
// ... or ...
query.Add(
Restrictions.Or(
Restrictions.InsensitiveLike(Projections.Property<Order>(a => a.OrderId1), OrderId2, MatchMode.Anywhere,
Restrictions.InsensitiveLike(Projections.Property<Order>(a => a.OrderId2), OrderId1, MatchMode.Anywhere
)
);
我無力的時刻,但來自記憶這是我會怎麼做,以測試這它。
編輯:在回答你的評論,你可以移動從類型安全的API中,並使用一些字符串。該Expression.Like方法有一個字符串值,屬性名的過載。也許這樣的事情?:
query.Add(Restrictions.InsensitiveLike(Projections.Property<Order>(a => a.OrderId1), OrderId2, MatchMode.Anywhere))
.Add(Expression.Like(OrderId2.ToString(), string.Concat("%", Projections.Property<Order>(a => a.OrderId1), "%")));
您可能需要增加一個,並在那裏,以及(儘管我並不需要)。
我應該指定OrderId2不是訂購的屬性。我已更新了我的原始文章 – getit 2012-08-08 00:05:47
我編輯了我的答案。 – 2012-08-08 00:50:37
謝謝,但它仍然無法正常工作。它編譯,但如果我使用搜索字符串,例如「a」,我得到以下錯誤:無法解析屬性:'a':Order – getit 2012-08-08 02:05:59