使用Func传递lambda表达式的多个条件

时间:2018-07-24 08:56:55

标签: c#

我有一个类似于以下内容的存储库。我使用Func传递lambda表达式,但我不知道该怎么做。

public IEnumerable<T> SelectAll(Expression<Func<T, bool>> predicate)
{
    return table.ToList();
}

在控制器中,我想通过lambda传递条件,如下所示,但我不知道如何:

var rslt = _repository.SelectAll(s=>s.Name="Jack" && s.Time==Date.Now())

我应该如何传递这样的lambda,以上的lambda不正确?

2 个答案:

答案 0 :(得分:2)

将其传递给.Where()

public IEnumerable<T> SelectAll(Expression<Func<T, bool>> predicate)
{

    return table.Where(predicate).ToList();
}

答案 1 :(得分:0)

加入扩展

public static class Extensions
{
    public static IEnumerable<T> SelectAll<T>(this IEnumerable<T> items, Func<T, bool> predicate)
    {
        return items.Where(predicate);
    }
}

示例:

List<int> items = new List<int>() {1,2,3,4,5 };
var result = items = items.SelectAll(x => x > 1 && x < 5);