Pregunta

He estado pensando en hacer uno más genérico. WHERE cláusula para no repetir el código.Tengo lo siguiente que devuelve publicaciones basadas en una etiqueta.Lo mismo podría usarse con la misma facilidad para devolver publicaciones basadas en un término de búsqueda o en una categoría.La única diferencia es la cláusula dónde.Entonces, por lo que he visto, se podrían usar árboles de expresión o constructores de predicados, aunque no sé si son lo mismo.Además, DLINQ era una opción en una publicación SO de 2013.Y LinqKit, supongo, también es una opción.¿Alguien puede señalar la dirección correcta para crear una cláusula Where más genérica?

Esta es la parte que me gustaría dinamizar. Where(Function(t) t.PostTag.Any(Function(t1) t1.Tag.StartsWith(tag))) para poder cambiar fácilmente en PostCategory o Posts en lugar de PostTag.

El 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

¿Fue útil?

Solución

resuelto -

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top