Ich versuche, eine Klasse, die aus einem DB einige Objekte des Typs QuerySuggest extrahieren. Mit Linq werden zwei Abfragen für die aus der DB zurückgegebenen Objekte durchgeführt.Eine Methode aus zwei, fast identischen Linq-Abfragen extrahieren
Es ist offensichtlich, dass die beiden Abfragen fast identisch sind, der einzige Unterschied ist, dass in ersterem habe ich eine zusätzliche Bedingung: "& & e.UserId == request.UserId".
Das scheint mir ein Code-Geruch, und ich möchte es umgestalten, aber ich bin mir nicht sicher, wie es weitergehen soll.
dies ist die Probe von Code, den ich ein Refactoring benötigen:
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();
Ist 'request' die gleiche Art in beiden Fällen? – JLRishe
ja, es ist der gleiche Typ – davideAlbertini