我想重構一個從DB中提取一些類型爲QuerySuggest的對象的類。使用Linq對從數據庫返回的對象進行兩個查詢。從兩個幾乎相同的Linq查詢中提取一個方法
很明顯,這兩個查詢幾乎完全相同,唯一的區別是在前者中我有一個附加條件:「& & e.UserId == request.UserId」。
這在我看來是一種代碼味道,我想重構它,但我不確定如何繼續。
這是代碼,我需要重構樣本:
IRepository<QuerySuggest> repository = _repositoryManager.GetRepository<QuerySuggest>(_repositoryType);
//entitiesByUser contains all the query suggest by the user
var entitiesByUser = repository.Query(c => c.Where(e => e.IdWebsite == request.WebSiteId &&
e.FulltextFree != null &&
e.DataOra >= (System.DateTime.Today.AddDays(-60).Date) &&
e.UserId == request.UserId)
.GroupBy(g => g.FulltextFree)
.Select(n => new { FulltextFree = n.Key, HowMany = n.Count() })
.Where(w => w.HowMany >= request.HowMany)
.OrderBy(o => o.HowMany))
.ToList();
//entitiesByUser contains all the query suggest not from user
var nonUserEntities = repository.Query(c => c.Where(e => e.IdWebsite == request.WebSiteId &&
e.FulltextFree != null &&
e.DataOra >= (System.DateTime.Today.AddDays(-60).Date))
.GroupBy(g => g.FulltextFree)
.Select(n => new { FulltextFree = n.Key, HowMany = n.Count() })
.Where(w => w.HowMany >= request.HowMany)
.OrderBy(o => o.HowMany))
.ToList();
是'request'在兩種情況下,同一類型? – JLRishe
是的,它是相同的類型 – davideAlbertini