我正在使用一个函数来排序并返回一个列表。
return Snacks;
在返回列表之前,我想执行一个额外的选择。只选择具有特定日期的记录,例如。 25/3月/ 2013。 因此,该列表返回5条记录。通过将其缩小到仅选择2013年3月25日。我将获得我需要的唯一3条记录。
我想用来优化搜索的记录中的列是'ActivityDate'所以我该如何缩小它?
是否像
Snacks.SelectMany(//add date);
或
Snacks.Select(where activityDate = ??);
return Snacks;
P.S我意识到还有其他方法可以做到这一点,我应该在函数的初始搜索中进行,但我需要在返回列表之前进行。所以任何建议将不胜感激,谢谢
修改 感谢大家的回复,但我不是要在列表中添加更多记录。我已经在列表中有5条记录,我现在要归结为3.通过这样做,我想只选择列表中的日期== filterDate。
当我尝试尝试.ToList时,他们都添加了我需要的3条记录,但其他2条记录已经存在于之前的搜索中。
答案 0 :(得分:6)
更新:在回应juharr的评论并宣传为SO提供精彩内容时,让我更新我的回答。
可以使用where
方法过滤集合。 Where
方法是一种存在于System.Linq
命名空间中的扩展方法,因此请确保将其包含在下面建议代码的代码文件中(例如,执行using System.Linq;
)。
您可以将过滤后的集合分配给变量或直接返回。
var filteredSnacks = Snacks.Where(x=>x.ActivityDate == filterDate).ToList();
return filteredSnacks;
// or simple do a
return Snacks.Where(x=>x.ActivityDate == filterDate).ToList();
答案 1 :(得分:3)
这不是简单的事情:
return Snacks.Where(s => s.ActivityDate == DateTime.Now).ToList();
(例如)?
答案 2 :(得分:2)
只需使用Where
:
var snacks = Snacks.Where(s => s.ActivityDate == "25/03/2013").ToList();
return snacks;
或
DateTime date = new DateTime(2013, 03, 25);
var snacks = Snacks.Where(s => s.ActivityDate == date).ToList();
return snacks;
答案 3 :(得分:2)
这是
的陈述var result = list.Where(item => item.Date.Equals(yourdatevalue))