Linq to sql 组合LinqToSql查询

Linq to sql 组合LinqToSql查询,linq-to-sql,Linq To Sql,我有以下代码: List<T> list = new List<T>(); IEnumerable<T> query1 = ... IEnumerable<T> query2 = ... IEnumerable<T> query3 = ... list.AddRange(query1.ToList<T>()); list.AddRange(query2.ToList<T>()); list.AddRange(

我有以下代码:

List<T> list = new List<T>();

IEnumerable<T> query1 = ...
IEnumerable<T> query2 = ...
IEnumerable<T> query3 = ...

list.AddRange(query1.ToList<T>());
list.AddRange(query2.ToList<T>());
list.AddRange(query3.ToList<T>());
List List=新列表();
IEnumerable查询1=。。。
IEnumerable查询2=。。。
IEnumerable查询3=。。。
list.AddRange(query1.ToList());
list.AddRange(query2.ToList());
list.AddRange(query3.ToList());
据我所知,每次在查询中使用ToList方法时,这都会导致访问数据库


如何组合查询,以便只对数据库进行一次访问?

您可以合并它们

list.AddRange( query1.Union(query2).Union(query3));

如果Union或Concat最终不减少对数据库的调用数量,我至少会去掉那些ToList()调用。AddRange接受IEnumerable,并且您的查询已经是IEnumerable。对查询调用ToList()只意味着对项目进行两次枚举—一次将查询转换为列表,第二次将列表添加到主列表