Domanda

Ho esaminato una clausola WHERE più generica per non ripetere il codice.Ho il seguente che restituisce i post in base a un tag.La stessa cosa potrebbe essere utilizzata come facilmente per i post di ritorno in base a un termine di ricerca o su una categoria.L'unica differenza è la clausola dove.Quindi, da quello che ho visto che gli alberi di espressione o i costruttori predicati potrebbero essere usati, anche se non so se sono gli stessi.Anche la Dlinq era n opzione in un post così dal 2013. E Linqkit Immagino sia anche un'opzione.Qualcuno può puntare nella giusta direzione per creare una clausola più generica dove?

Questa è la parte che vorrei rendere Where(Function(t) t.PostTag.Any(Function(t1) t1.Tag.StartsWith(tag))) dinamico in modo da poter solo facilmente swpa in codice postale o messaggi al posto di Posttag.

Il codice:

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

È stato utile?

Soluzione

Risolto -

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top