You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Lambda表达式筛选日期在指定列表中的列表项

修正后的Lambda表达式实现筛选需求

需求说明

从myObject集合中筛选满足以下条件的项:

  • 对象的xUserId属性等于指定的userId
  • 对象的Date属性存在于dates列表中

修正后的完整代码

var response = myObject
               .Where(x => x.xUserId == userId 
                       && dates.Contains(x.Date))
               .Select(x => new
               {
                   x.Id,
                   x.Quantity,
                   x.Date
               })
               .OrderBy(x => x.Id)
               .ToList();

关键修正点

  • 修正属性引用:原代码里的xUserId应该是x.xUserId,要明确访问集合中每个对象的xUserId属性
  • 日期匹配逻辑:用dates.Contains(x.Date)直接检查x.Date是否在目标日期列表中,这是集合存在性判断的标准写法
  • 修复语法错误:补全了Where方法的闭合括号,解决原代码的语法问题

额外补充:日期精度处理(可选)

如果dates里的日期仅保留年月日部分,而x.Date包含时分秒信息,需要统一精度后再判断,避免因为时分秒差异导致匹配失败:

// 方法1:使用DateOnly(.NET 6及以上版本支持)
var dateOnlyList = dates.Select(d => DateOnly.FromDateTime(d)).ToList();
var response = myObject
               .Where(x => x.xUserId == userId
                       && dateOnlyList.Contains(DateOnly.FromDateTime(x.Date)))
               .Select(x => new
               {
                   x.Id,
                   x.Quantity,
                   x.Date
               })
               .OrderBy(x => x.Id)
               .ToList();

// 方法2:截取Date部分比较
var response = myObject
               .Where(x => x.xUserId == userId
                       && dates.Any(d => d.Date == x.Date.Date))
               .Select(x => new
               {
                   x.Id,
                   x.Quantity,
                   x.Date
               })
               .OrderBy(x => x.Id)
               .ToList();

内容的提问来源于stack exchange,提问作者imj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:57:18