您好我是新来的C#,发现这个代码从互联网:如何有条件地选择具有可查询linq的哈希集中的项目?
public class InMemoryObjectSet<T>
: IObjectSet<T> where T : class
{
readonly HashSet<T> _set;
readonly IQueryable<T> _queryableSet;
public InMemoryObjectSet(IEnumerable<T> entities)
{
_set = new HashSet<T>();
foreach (var entity in entities)
{
_set.Add(entity);
}
_queryableSet = _set.AsQueryable();
}
public Expression Expression
{
get { return _queryableSet.Expression; }
}
public IQueryProvider Provider
{
get { return _queryableSet.Provider; }
}
public IEnumerator<T> GetEnumerator()
{
return _set.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
/* Ignore Add, Delete operations */
}
我试图找到InMemoryObjectSet与条件名称的元素是“XX”。当然,我可以使用的IEnumerator遍历,但我只是想知道是否可以使用LINQ上下的方式:
var inMemoryItems = new InMemoryObjectSet<Customer>();
System.Linq.Expressions.Expression<Customer> exp = (x => x.Name == "xx");
var findItem = inMemoryItems.Provider.CreateQuery<Customer>(exp);
错误:
Cannot convert lambda expression to type 'Customer' because it is not a delegate type
任何人可以请帮助?
为什么不只是'_queryableSet.Whre(x => x.Name ==“xx”)''? –
没有特别的原因,只是一个条件样本。 – LOUDKING