3

我正在使用一个函数来排序并返回一个列表。

return Snacks;

在返回列表之前,我想执行一个额外的选择。仅选择具有特定日期的记录,例如。2013 年 3 月 25 日。因此,列表返回 5 条记录。通过将其缩小到仅选择 2013 年 3 月 25 日。我将获得我需要的唯一 3 条记录。

我想用来细化搜索的记录中的列是“ActivityDate”那么我该如何缩小范围?

是不是有点像

    Snacks.SelectMany(//add date);

或者

    Snacks.Select(where activityDate = ??);
    return Snacks;

PS我意识到还有其他方法可以做到这一点,我可能应该在函数的初始搜索中做到这一点,但我需要在返回列表之前做到这一点。所以任何建议将不胜感激谢谢

编辑 感谢大家的回复,但我不想在列表中添加更多记录。我已经在列表中有 5 条记录,我现在将其减少到 3。通过这样做,我只想选择列表中日期 == filterDate 的记录。

当我在 .ToList 尝试您的尝试时,他们都添加了我需要的 3 条记录,但其他 2 条记录已经存在于之前的搜索中。

4

4 回答 4

6

更新:为了回应 juharr 的评论并促进为 SO 提供精彩内容,让我更新我的答案。

可以使用该where方法过滤集合。Wheremethod 是一个存在于System.Linq命名空间中的扩展方法,因此请确保将其包含在您将建议代码放在下面的代码文件中(例如 do a 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();
于 2013-05-01T11:58:20.160 回答
3

是不是很简单:

return Snacks.Where(s => s.ActivityDate == DateTime.Now).ToList();

(例如)?

于 2013-05-01T11:58:32.897 回答
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;
于 2013-05-01T11:58:13.933 回答
2

这是声明

var result = list.Where(item => item.Date.Equals(yourdatevalue))
于 2013-05-01T11:59:03.930 回答