优化搜索并返回列表

时间:2013-05-01 11:55:46

标签: c# asp.net .net linq asp.net-mvc-3

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

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条记录已经存在于之前的搜索中。

4 个答案:

答案 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))