我们在我们的新项目中使用Linq-to-SQL和SQL Server作为ORM。我之前从未使用过Linq-to-SQL,所以我的问题可能有点愚蠢。我希望有一个方法可以通过谓词在DB中搜索实体,如下所示:
public IEnumerable<T> Get<T>(Expression<Func<T, bool>> @where)
您能否提供一些建议,我可以看到一些代码示例或想法如何实现?
答案 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>
)。