如何使用Linq-to-SQL进行谓词搜索

时间:2012-04-11 11:38:35

标签: sql-server asp.net-mvc-3 linq-to-sql

我们在我们的新项目中使用Linq-to-SQL和SQL Server作为ORM。我之前从未使用过Linq-to-SQL,所以我的问题可能有点愚蠢。我希望有一个方法可以通过谓词在DB中搜索实体,如下所示:

public IEnumerable<T> Get<T>(Expression<Func<T, bool>> @where)

您能否提供一些建议,我可以看到一些代码示例或想法如何实现?

1 个答案:

答案 0 :(得分:1)

你想要Where(这里,originalList是任何可枚举的,特别是它可以是你上下文中的一个表):

var filteredList = originalList.Where(element => ShouldBeIncluded(element));

编辑:

var filteredList =
    from element in originalList
    where ShouldBeIncluded(element)
    select element;

如果ShouldBeIncluded是Func<T, bool>,那么会有一个令人眼花缭乱的简化语法:

var filteredList = originalList.Where(ShouldBeIncluded);

编辑2:另请注意,完整语法为:

var filteredList = originalList.Where<TTypeOfElement>(element => ShouldBeIncluded(element));

但泛型参数可以省略,因为编译器会从originalList的类型中推导出它(假设它是IEnumerable<TTypeOfelement>)。