2015-07-18 5 views
1

Я использую выражение Lambda для Where Where with Join. Вот мой запросWhere where with Join in lambda expression

var ActiveImages = db.tbl_Advertise 
    .Where(i => i.IsVisible == true) 
    .Join(db.tbl_ShopMast.Where(i => i.IsVisible == true && i.fk_userID == userid), 
     i => i.fk_shop_id, 
     j => j.ShopID, 
     (i, j) => new { Advertise = i, Shop = j}) 
    .ToList(); 

или я могу даже правильно этот запрос, как:

var ActiveImages = db.tbl_Advertise 
    .Join(db.tbl_ShopMast.Where(i => i.IsVisible == true && i.fk_userID == userid), 
     i => i.fk_shop_id, 
     j => j.ShopID, 
     (i, j) => new { Advertise = i, Shop = j}) 
    .ToList() 
    .Where(i=>i.Advertise.IsVisible == true); 

Какой один работает быстрее? Хотя я заметил, что оба дают одинаковый результат, но какой путь правильный?

ответ

2

С вашим первым запросом на сервере базы данных выполняется условие where, а второй запрос выполняется на вашей клиентской машине. Из-за этого с первым запросом:

  • сервер базы данных работает больше;
  • клиентская машина делает меньше работы;
  • меньше данных передаются от сервера к клиенту;

и со вторым запросом это просто противоположное. Трудно сказать, что будет быстрее. В большинстве случаев ваш первый запрос будет работать быстрее и, следовательно, предпочтителен, но я видел сценарии, в которых запросы, подобные вашей второй, работают быстрее.