ASP.NET中Lambda表达式如何传递多参数实现多条件查询
多条件筛选实现方案
你不需要给Lambda表达式传入多个参数,Single方法接收的谓词本身就是一个接收单个实体参数、返回布尔值的委托,直接在返回表达式中拼接多个筛选条件即可。
固定多条件写法
直接用逻辑与&&拼接ItemId和LocationId的相等判断,修改后的代码如下:
var itemInventoryUpdate2 = db.ItemInventoryDatas .Single(items => items.ItemId == item.ItemId && items.LocationId == item.LocationId);
注意事项
&&为短路逻辑与,要求两个条件必须同时满足,等价于SQL查询中的AND逻辑- 如果不想让无匹配结果时
Single抛出异常,可将其替换为SingleOrDefault,无匹配时返回类型默认值(通常为null) - 需要追加更多固定筛选条件时,直接继续用
&&向后拼接判断逻辑即可,比如追加库存状态判断:&& items.StockStatus == 有效状态值
动态条件扩展写法
如果LocationId是可选筛选条件(即仅当传入有效LocationId时才需要筛选),使用链式Where拼接逻辑更灵活,示例代码:
var query = db.ItemInventoryDatas.Where(items => items.ItemId == item.ItemId); // 仅当LocationId有有效值时追加筛选规则 if (item.LocationId != Guid.Empty) // 非空判断逻辑根据你使用的ID类型调整,比如int类型可写 > 0 { query = query.Where(items => items.LocationId == item.LocationId); } var itemInventoryUpdate2 = query.Single();
内容的提问来源于stack exchange,提问作者wade05
相关产品推荐
相关产品推荐

