使用Linq2Sql调用Union的次数是否有限制?

本文关键字:是否 有限制 Linq2Sql 调用 Union 使用 | 更新日期: 2023-09-27 18:08:41

当使用Linq的Union方法时,在同一个IQueryable上使用该方法的次数是否有上限?

考虑这个片段,显然有点做作:

public IQueryable<Person> GetPeople(IEnumerable<PersonDto> candidates)
{
    var successful = this.peopleRepository.All().Where(p => false);
    foreach(var candidate in candidates)
    {
        if (candidate.IsSuccessful())
        {
            var successfulCandidate = this.peopleRepository.All()
                            .Where(p => p.id == candidate.id);
            successful = successful.Union(successfulCandidate);
        }
    }
    return successful;
}

是否有限制的次数,我可以联合IQueryables,仍然得到使用实体框架和SQL Server的结果?

使用Linq2Sql调用Union的次数是否有限制?

Union方法使用==运算符实现第一个参数(这里是successful)。来自MSDN:

The query behavior that occurs as a result of executing an expression tree that 
represents calling Union<TSource>(IQueryable<TSource>, IEnumerable<TSource>) depends
on the implementation of the type of the source1 parameter. The expected behavior is that 
the set union of the elements in source1 and source2 is returned.

因此,如果源是一个自定义对象,您可能会有一个错误,这取决于您的==的实现和您在Union参数中放入的内容,但它与Union的调用次数无关