linq - include where parameters
本文关键字:parameters where include linq | 更新日期: 2023-09-27 18:05:19
我有一个关于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和propertystatus参数。它们是来自用户的输入值。他希望通过pCode或/和propertystatus进行搜索。
所以,当用户填写只有pCode他想返回所有的记录与pCode有任何propertyStatuses…好吧,因为propertyStatuses是在查询,但它是null, 查询将不会返回任何(因为没有记录与空(null) propertyStatuses…
因此,问题是:是否有办法包含这些参数,只有当它们有值时?(不使用所有组合进行单独的N个查询?(我有多个输入)Thanks in advance.
您可以更改where
子句,使包含null
的部分始终返回true。
where (pCode == null || p.PCode == pCode)
&& (propertyStatuses == null || p.PropertyStatusID == propertyStatuses)
我只是猜测,但尝试:
where p.PCode == pCode &&
(p.PropertyStatusID == null || p.PropertyStatusID == propertyStatuses)