2009-07-02 3 views
0

У меня есть следующий код:Объединение LinqToSql запросов

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 используется в запросе.

Как бы объединить запросы, чтобы в базу данных была сделана только одна поездка?

ответ

1

Возможно, вы сможете объединить их.

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

Если союз или Concat не до конца сокращения числа обращений к базе данных, я бы по крайней мере, избавиться от этого ToList() вызывает. AddRange принимает IEnumerable, и ваш запрос уже IEnumerable. Вызов ToList() в вашем запросе означает, что ваши объекты получают перечисление дважды - один раз, чтобы преобразовать запрос в список, и второй раз, чтобы добавить список в основной список.

Смежные вопросы