where子句类似于lambda表达式中的语法

时间:2013-05-04 15:04:46

标签: asp.net-mvc-3 linq-to-sql lambda

我搜索了很多,但无法找到解决问题的正确方法。

我正在尝试的是非常基本的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都可以为空,也可以包含多个项目。

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

并且如果我通过两个带有多个条目的列表,则只显示与这些条目匹配的记录。

目前没有发生这种情况,当我的任何列表为空时,我会收到错误。虽然如果列表中的任何一个是空的,那么我必须获得所有记录。这是非常常见的要求,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

Where(x => 
(!website.websiteFilterList.Any() || website.websiteFilterList.Contains(x.site.ToString()))
&&
(!website.cityFilterList.Any() || website.cityFilterList.Contains(x.city.ToString())))