使用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的结果?
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
的调用次数无关