我需要检索符合某些条件的文档。
以下查询将引发System.NotSupportedException
。
var documents = await _context.Documents.Where(d => d.CreatedDate >
filter.From && d.CreatedDate < filter.To &&
HighestProbabilityCategories(d).Any(x =>
Ids.Any(y => y == x.CategoryId)))
.OrderByDescending(e => e.CreatedDate)
.ToListAsync();
基本上,每个文档都有许多类别,每个类别都有一个id({Guid
)和一个概率(float
)。我需要检索其类别ID在Ids
中的文档,以使每个类别的概率在该特定文档的所有类别中是最高的。我希望一切都清楚。
private IEnumerable<Category> HighestProbabilityCategories(Documents doc)
{
var hightest = doc.Category.Max(p => p.Probability);
return doc.Category.Where(c => c.Probability == hightest);
}
我意识到在数据库方面,方法调用没有任何意义。
我唯一想到的另一种方法是先按日期过滤文档,然后针对每个文档,将概率最高的类别添加到字典<document, List<Category>
中,然后在查询过程中使用该文档作为密钥。但是,我不确定这样做的效率如何,或者是否有更好的方法。