LiteDB не может выполнить запрос, используя параметр enum - PullRequest
0 голосов
/ 22 апреля 2020

У меня возникла необычная проблема с LiteDB, и я не могу понять, что я делаю неправильно.

У меня есть классы лиги сборов, в каждой лиге есть перечисление, говорящее, какой тип лиги это is:

public enum LEAGUETYPE
{
    PremierLeague,        
    Championship,
    LeagueOne,
    LeagueTwo
}

Я могу успешно запросить список лиг напрямую, используя перечисление следующим образом:

var leagues = db.GetCollection<League>("Leagues");
var result1 = leagues.FindOne(x => x.LeagueType == LEAGUETYPE.PremierLeague);

Однако, если у меня есть тип лиги, переданный в метод запроса как Параметр или определите параметр как локальную переменную, после чего произойдет сбой:

var tempLeague = LEAGUETYPE.PremierLeague;
var leagues = db.GetCollection<League>("Leagues");
var result2 = leagues.FindOne(x => x.LeagueType == tempLeague);

Исключение составляет:

An unhandled exception of type 'System.NullReferenceException' occurred in LiteDB.dll: 'Object reference not set to an instance of an object.'
   at LiteDB.LinqExpressionVisitor.VisitBinary(BinaryExpression node)
   at System.Linq.Expressions.BinaryExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.VisitLambda[T](Expression`1 node)
   at LiteDB.LinqExpressionVisitor.VisitLambda[T](Expression`1 node)
   at LiteDB.LinqExpressionVisitor.Resolve(Boolean predicate)
   at LiteDB.BsonMapper.GetExpression[T,K](Expression`1 predicate)
   at LiteDB.LiteCollection`1.Find(Expression`1 predicate, Int32 skip, Int32 limit)

Чего мне здесь не хватает?

...