我正在使用LINQ和Lambda在2个条件下使用此查询来获取数据。是否可以在没有其他条件的情况下编写此逻辑-
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;
}
答案 0 :(得分:4)
确定是
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;
}
答案 1 :(得分:0)
这是一种取得正确结果的方法:
data = data
.Where(x => x.PalletID == palletID)
.Where(!string.IsNullOrEmpty(locationID)? x.LocationID == locationID : true)
.ToList();
注意:尽管语法正确,但是接受的答案将返回错误的结果。即使LocationID
为空或为空,它也会始终比较locationID
。请注意,在locationID == null
的情况下,我们根本不希望进行比较(我们不希望这样做:x => x.LocationID == null
)。