Question

J'ai envisagé de créer un modèle plus générique WHERE clause pour ne pas répéter le code.J'ai ce qui suit qui renvoie des messages basés sur une balise.La même chose pourrait être utilisée tout aussi facilement pour renvoyer des publications basées sur un terme de recherche ou sur une catégorie.La seule différence réside dans la clause Where.Donc, d'après ce que j'ai vu, des arbres d'expression ou des générateurs de prédicats pourraient être utilisés, même si je ne sais pas si ce sont les mêmes.DLINQ n'était également pas une option dans un poste SO de 2013.Et LinqKit, je suppose, est aussi une option.Quelqu'un peut-il indiquer la bonne direction pour créer une clause Where plus générique ?

C'est la partie que j'aimerais rendre dynamique Where(Function(t) t.PostTag.Any(Function(t1) t1.Tag.StartsWith(tag))) afin que je puisse tout aussi facilement passer à PostCategory ou Posts à la place de PostTag.

Le code:

Return _postRepository.SelectAll.Where(Function(t) t.PostTag.Any(Function(t1) t1.Tag.StartsWith(tag))).Select(Function(S) New be_PostsViewModel With {.IsPublished = S.PostIsPublished, .Id = S.PostId, .PostSummary = S.PostSummary, .PostDateCreated = S.PostDateCreated, .PostTitle = S.PostTitle, .PostTags = S.PostTag}).OrderByDescending(Function(d) d.PostDateCreated).Where(Function(p) p.IsPublished = True).Skip((Page - 1) * PageSize).Take(PageSize).ToList

Était-ce utile?

La solution

Résolu -

Dim PostsByTagExpression As Expression(Of Func(Of PostSummaryDTO, Boolean)) =
Function(p) p.PostTag.Any(Function(t1) t1.Tag.StartsWith(Word))

Dim postsbytag = _postRepository.SelectAll.AsExpandable.Where(PostsByTagExpression)
.Select
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top