结合LinqToSql查询

时间:2009-07-02 14:40:16

标签: 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(query3.ToList<T>());

据我所知,每次在查询中使用ToList方法时,这将导致数据库的访问。

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

2 个答案:

答案 0 :(得分:1)

你或许能够将他们联合起来。

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

答案 1 :(得分:1)

如果Union或Concat最终没有减少对数据库的调用次数,我至少会删除那些ToList()调用。 AddRange采用IEnumerable,您的查询已经是IEnumerable。在您的查询上调用ToList()只意味着您的项目被枚举两次 - 一次将查询转换为List,第二次将列表添加到主List。