我对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查询?(我有多个输入)
提前致谢..
答案 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)