2

FiscalYear.idinを持つすべての @events を取得しようとしていIList<int> yearsます。私は使用してany()いますが、次のスタックトレースエラーをスローしています:

 Unrecognised method call: 
 System.Linq.Enumerable:Boolean Any[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Boolean])

何か案は?コードは次のとおりです。

FindAllPaged(int eventTypeId, IList<int> aors, IList<int> years)
{

IList<Domain.Event> results =
    session.QueryOver<Event>()
      .Where(@event => !@event.IsDeleted && 
      @event.EventType.Id == eventTypeId &&
      years.Any(y => y == @event.FiscalYear.Id))
}
4

4 に答える 4

1

同じ例外メッセージも発生しました

認識されないメソッド呼び出し: System.Linq.Enumerable:Boolean Any[TSource](System.Collections.Generic.IEnumerable 1[TSource], System.Func2[TSource,System.Boolean])

Contains メソッドで IqueryOver を使用する場合

 Ex: 
var departmentTypesArray = criteria.DepartmentTypes.ToArray();
qover = qover.Where(p => departmentTypesArray.Contains(p.DepartmentType));

データベースをチェックすると、クエリを作成しているテーブル内にレコードがありません。

クエリを制限で変更すると、うまくいきます

qover = qover.WhereRestrictionOn(p => .DepartmentType).IsIn(departmentTypesArray);
于 2016-01-26T16:57:44.720 に答える
1

で Linq メソッドを使用しようとしているようですQueryOver。これはサポートされていません。代わりに Linq プロバイダーを使用してみてください。

FindAllPaged(int eventTypeId, IList<int> aors, IList<int> years)
{

IList<Domain.Event> results =
    session.Query<Event>()
      .Where(@event => !@event.IsDeleted && 
      @event.EventType.Id == eventTypeId &&
      years.Any(y => y == @event.FiscalYear.Id))
}
于 2013-08-09T11:06:43.650 に答える