【发布时间】:2017-01-27 00:56:53
【问题描述】:
我设置了一个实体框架类来从 SQL 数据库中读取表,但我不太清楚如何传递 LINQ 表达式来仅过滤某些对象。我知道有一种方法可以构建表达式树并在类中动态地执行此操作,但我似乎无法找到最好的方法。
感谢任何提示。
class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
class MyObjectCollection<T> where T : class
{
private List<T> myInternalCollection = new List<T>();
MyObjectCollection()
{
using (var db = new MyContext())
{
foreach (T row in db.Set<T>())
{
// Enumerate the data, do whatever with it...
myInternalCollection.Add(row);
}
}
}
MyObjectCollection(var MyLinqExpression)
{
using (var db = new MyContext())
{
foreach (T row in db.Set<T>().Where.MyLinqExpression()
{
// Enumerate the data, do whatever with it...
myInternalCollection.Add(row);
}
}
}
}
// Works fine:
MyObjectCollection<Customer> allCustomers = new MyObjectCollection<Customer>();
// Would like something like this:
MyObjectCollection<Customer> customersP = new MyObjectCollection<Customer>(c => c.StartsWith("P"));
【问题讨论】:
-
尝试作为参数
Predicate<T>。 -
看看
Queryable.Where方法签名(因为基本上这就是你在问什么)。提示:Expression<Func<T, bool>>
标签: c# entity-framework linq