0

我一直在考虑制作一个更通用的WHERE子句,所以我不会重复代码。我有以下基于标签返回帖子的内容。同样的事情可以很容易地用于基于搜索词或类别的返回帖子。唯一的区别是 where 子句。因此,从我所看到的可以使用表达式树或谓词构建器,尽管我不知道它们是否相同。在 2013 年的 SO 帖子中,LINQ 也是一个选项。我猜 LinqKit 也是一个选项。有人可以指出正确的方向来创建更通用的 where 子句吗?

这是我想要动态化的部分,Where(Function(t) t.PostTag.Any(Function(t1) t1.Tag.StartsWith(tag)))以便我可以在 PostCategory 或 Posts 中轻松地 swpa 来代替 PostTag。

编码:

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

4

1 回答 1

0

解决了 -

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
于 2014-07-30T17:20:31.777 回答