linq - 包括参数

时间:2011-08-12 19:16:24

标签: c# asp.net linq

我对Linq有一个奇怪的问题。

我有这个问题:

 var results = (from p in hotsheetDB.Properties
                           where p.PCode == pCode
                           && p.PropertyStatusID == propertyStatuses
                           orderby p.PropertyID descending
                           select new
                           {
                               PropertyId = p.PropertyID,
                               PCode = p.PCode,
                               PropertyTypeName = p.cfgPropertyType.Name,
                               FullAddress = p.Address1 + " " + p.Address2,
                               ZipCode = p.ZipCode.Code,
                               CityName = p.cfgCity.Name,
                               LivingSquareFeet = p.LivingSquareFeet,
                               LotSquareFeet = p.LotSquareFeet,
                               NumBedrooms = p.NumBedrooms,
                               NumBathrooms = p.NumBathrooms,
                               PropertyStatusName = p.cfgPropertyStatuse.Name
                           });

您会注意到pCode和propertyStatuses参数。它们是来自用户的输入值。他想通过pCode或/和propertyStatuses进行搜索。

因此,当用户填写仅pCode 时,他想要返回具有任何propertyStatuses的pCode的所有记录......好吧,因为查询中的propertyStatuses是IS,但它是null,查询不会返回任何内容(因为没有带空(null)属性的记录...

因此,问题:是否有任何方法可以包含这些只有乳清它们有值的参数?(不用所有组合进行单独的N查询?(我有多个输入)

提前致谢..

2 个答案:

答案 0 :(得分:1)

您可以更改where子句,使包含null的部分始终返回true。

例如:

where (pCode == null || p.PCode == pCode)
   && (propertyStatuses == null || p.PropertyStatusID == propertyStatuses)

答案 1 :(得分:0)

我只是在这里猜测,但尝试:

where p.PCode == pCode && 
(p.PropertyStatusID == null || p.PropertyStatusID == propertyStatuses)