LINQ查询中的方法调用

时间:2018-06-20 11:50:14

标签: c# linq

我需要检索符合某些条件的文档。

以下查询将引发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>中,然后在查询过程中使用该文档作为密钥。但是,我不确定这样做的效率如何,或者是否有更好的方法。

0 个答案:

没有答案