Я пытаюсь получить из коллекции Mongo только то, что "x.SystemName" на 80% похоже на входную строку. Это работает, когда я загружаю все записи из коллекции в переменную, но я хочу получать результаты непосредственно из базы данных.
Этот код работает:
IEnumerable<Company> companies = await FindAllCompanies();
IEnumerable<Company> _dbresult = (from company in companies
where company.SystemName.StringRateSimilarity(inputSystemName) >= 0.8 || company.SystemName.Contains(inputSystemName) || company.Name.ToLowerInvariant().Contains(name.ToLowerInvariant())
select company);
Но я хочу сделать это без предварительной загрузки всех компаний в переменную:
IEnumerable<Company> _dbresult = (from company in _db.DatabaseHost.GetCollection<Company>(collectionName).AsQueryable()
where company.SystemName.StringRateSimilarity(inputSystemName) >= 0.8 || company.SystemName.Contains(inputSystemName) || company.Name.ToLowerInvariant().Contains(name.ToLowerInvariant())
select company);
или как это:
var collection = _db.DatabaseHost.GetCollection<Company>(collectionName);
IEnumerable<Company> _dbresult = collection.AsQueryable().Where(x => (Services.API.StringRateSimilarity(x.SystemName, inputSystemName) >= 0.8) || (x.SystemName.Contains(inputSystemName)) || (x.Name.ToLowerInvariant().Contains(name.ToLowerInvariant()))).Select(e => e);
Но это делает InvalidOperationException: StringRateSogeneity ({document} {systemName}, "TEST") не поддерживается. Ошибка