Como fazer um mais genérico cláusula WHERE?
-
21-12-2019 - |
Pergunta
Eu tenho procurado fazer com que um mais genérico WHERE
cláusula para eu não repetir código.Eu tenho o seguinte que retorna mensagens com base em uma etiqueta.A mesma coisa poderia utilizado apenas como facilmente para retornar mensagens com base em um termo de pesquisa ou em uma categoria.A única diferença é a cláusula where.Assim, a partir do que eu vi árvores de expressão ou predicado construtores poderiam ser usados, embora eu não sei se essas são as mesmas.Também DLINQ foi opção n em um so post, a partir de 2013.E LinqKit eu acho que é também uma opção.Alguém pode apontar na direção certa para a criação de um mais genérico cláusula where?
Esta é a parte que eu gostaria de fazer dinâmica Where(Function(t) t.PostTag.Any(Function(t1) t1.Tag.StartsWith(tag)))
então, que eu poderia facilmente swpa em PostCategory ou Postos no lugar de PostTag.
Código:
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
Solução
Resolvido -
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