1

Linq2NHibernate が解析して入力済みのエンティティを返す NHibernate に渡される linq クエリがあります。

string firstName = "Ryan";
Store store = _repository.Query<Store>().Where(x => x.Employees.Select(y => y.FirstName).Contains(firstName)).FirstOrDefault();

面倒なところはx => x.Employees.Select(y => y.FirstName).Contains(firstName)

これが行うべきことは、Ryan という名前の従業員がいる店舗を選択することです。

上記の行に「 Unhandled Expression Type: 1004」というエラーが表示されます

それはLinq2NHibernateの制限であり、.Select().Contains()解析できないようです。

何か案は?他の誰かがこのエラーを受け取ったことがありますか? 修正または回避するにはどうすればよいですか?

[編集]

これが私が代わりに使用した最終的なものです。

string firstName = "Ryan"
Store store = _repository.Query<Store>().Where(x => x.Employees.Any(y => y.FirstName == firstName)).FirstOrDefault();

Linq クエリはx => x.Employees.Any(y => y.FirstName == firstName)

4

1 に答える 1

3

私は LINQ to NHibernate を使用していませんが、それは他の場所でそのクエリを作成する方法ではありません。試す:

string firstName = "Ryan";
Store store = _repository.Query<Store>()
                         .Where(s => s.Employees.Any(
                                e => e.FirstName.Equals(
                                     firstName,  StringComparison.WhateverTypeYouNeed))
               ).FirstOrDefault();

L2NH が string.Equals() を好まない場合は、== を試してください

于 2009-09-16T13:31:04.227 に答える