-1

我搜索了很多,但找不到适合我的问题的解决方案。

我正在尝试在 sql 中非常基本,但不知道如何使其在 lambda 表达式中工作,这就是我想要做的:

    FilteredInOrderquery = mycontext.Websites.OrderBy(website.currentOrderBy + " " + website.sortOrder).Where(
        x => (website.websiteFilterList.Contains(x.site.ToString()))

            &&
            (website.cityFilterList.Contains(x.city.ToString()))

           ).Select(x => new WebsiteData(
              x.RowID,
              x.pagetype,
              x.site,
              x.creationdate ?? DateTime.Today,
              x.expirationdate ?? DateTime.Today,
              x.domainregistrar,
              x.pin,
              x.area,
              x.city,
             ((x.expirationdate ?? DateTime.Today) - DateTime.Today).Days.ToString() + " days"));

websitefilterList 和 cityFilterlist 都可以为空,也可以包含多个项目。

重点是即使我将任何列表作为空传递,我也应该能够获取记录(如果列表为空,那么我应该获取该列的所有记录)

并且如果我通过两个列表都包含多个条目..与这些条目匹配的记录只应该出现。

目前这没有发生,当我的任何列表为空时,我都会收到错误消息。尽管如果列表中的任何一个为空,那么我必须获取所有记录。这是非常普遍的要求,但我找不到解决方案。

4

1 回答 1

0
Where(x => 
(!website.websiteFilterList.Any() || website.websiteFilterList.Contains(x.site.ToString()))
&&
(!website.cityFilterList.Any() || website.cityFilterList.Contains(x.city.ToString())))
于 2013-05-04T15:09:45.853 回答