NHibernate LINQ выдает «Бинарный оператор Equal не определен для типов« System.Collections.Generic.IList`1 [System.Int32] 'и «System.Int32'» - PullRequest
0 голосов
/ 18 октября 2010

Следующее LINQ to NHibernate (с использованием NHibernate 3.0) приводит к возникновению исключения System.InvalidOperationException с сообщением «Бинарный оператор Equal не определен для типов System.Collections.Generic.IList`1 [System.Int32]'and' System.Int32 '"

public IEnumerable<ProjectSummary> GetProjects( IList<int> clients )
{
    using ( var session = _sessionManager.OpenSession() )
    {
        var q = from p in session.Query<Project>()
                where clients.Contains( p.Client.Id )
                select new ProjectSummary()
                {
                    ProjectId = p.Id,
                    Active = p.Active,
                    ClientId = p.Client.Id,
                    Name = p.Name

                };

        return q.ToList();
    }
}

Ответы [ 2 ]

4 голосов
/ 18 октября 2010

Эта проблема была исправлена ​​в багажнике.

Для любого другого System.NotSupportedExcpetion с участием Equals вы можете посмотреть этот пост в моем блоге http://www.primordialcode.com/Blog/Post/nhibernate-3-extending-linq-provider-fix-notsupportedexception

0 голосов
/ 18 октября 2010

Используйте List<int> вместо IList<int>

...