Entity framework 搜索优化 (Enumerable.where(c => c.collection.any(条件)))

Entity framework search optimization (Enumerable.where(c => c.collection.any(condition)))

我很难解决这个问题, 我有一个有很多关系的成员对象,其中 2 个来自同一个 table,但一个是卖家,一个是买家

public partial class Member {
//a lot of properties, then the one i am using for my search

public virtual ICollection<Trade> Trades1 { get; set; }
public virtual ICollection<Trade> Trades2 { get; set; }
}

我正在使用的 linq

members = context.Members.AsNoTracking().Include(x => x.Trades1).Include(x => x.Trades2)
            .Where(x => x.MemberStatus != StatusTypeRef.MemberStatus.ClosedAccount &&                           
                  (x.Trades1.Any(d => d.Date >= startDate && 
                  d.Date <= EndDate && 
                  d.Status== "Completed" && 
                  d.BuyAmount >0)
                  ||
                  x.Trades2.Any(d => d.Date >= StartDate && 
                  d.Date <= EndDate && d.Status =="Completed" &&
                  d.SellAmount > 0)));

这需要很长时间才能处理,还要注意贸易 table 有很多数据,这是问题所在吗? 这个怎么优化啊,真的很慢

我尝试先获取交易,然后将所有会员 ID 投射到一个列表中,并用它来搜索所有会员,但速度较慢。 任何意见,将不胜感激。谢谢。

搜索后,除了删除所有我不需要的 Includes 之外,没有什么可做的。