C# 参数为空时排除条件
我使用LINQ和Lambda在2个条件下使用此查询获取数据。是否可以在没有if-else条件的情况下编写此逻辑-C# 参数为空时排除条件,c#,entity-framework,linq,lambda,C#,Entity Framework,Linq,Lambda,我使用LINQ和Lambda在2个条件下使用此查询获取数据。是否可以在没有if-else条件的情况下编写此逻辑- public List<Pallet> GetPallet(string palletID, string locationID) { List<Pallet> data = new List<Pallet>(); if (locationID != null) data = data.Where(x =>
public List<Pallet> GetPallet(string palletID, string locationID)
{
List<Pallet> data = new List<Pallet>();
if (locationID != null)
data = data.Where(x => x.PalletID == palletID && x.LocationID == locationID).ToList();
else
data = data.Where(x => x.PalletID == palletID).ToList();
return data;
}
public List GetPallet(string palletID,string locationID)
{
列表数据=新列表();
if(locationID!=null)
data=data.Where(x=>x.PalletID==PalletID&&x.LocationID==LocationID).ToList();
其他的
data=data.Where(x=>x.PalletID==PalletID.ToList();
返回数据;
}
确定它是:
public List<Pallet> GetPallet(string palletID, string locationID)
{
List<Pallet> data = new List<Pallet>();
data = data.Where(x => x.PalletID == palletID && (locationID == null || x.LocationID == locationID)).ToList();
return data;
}
public List GetPallet(string palletID,string locationID)
{
列表数据=新列表();
数据=数据。其中(x=>x.PalletID==PalletID&&(locationID==null | | x.locationID==locationID)).ToList();
返回数据;
}
这是一种获得正确结果的方法:
data = data
.Where(x => x.PalletID == palletID)
.Where(!string.IsNullOrEmpty(locationID)? x.LocationID == locationID : true)
.ToList();
注意:接受的答案将返回错误的结果,尽管语法正确。它将始终比较
LocationID
,即使LocationID
为空。请注意,在locationID==null
的情况下,我们根本不希望进行比较(我们不希望这样:x=>x.locationID==null
)。位置从何而来?如果是locationID
?@RyanLundy感谢更正了它不应该是&
,而不是|
?否,因为如果locationID为null,子状态是正确的;如果locationID为null,子状态是正确的;如果locationID不为null,子状态是正确的