我正在读这篇文章:
http://ludwigstuyck.wordpress.com/2013/03/05/a-reference-architecture-part-3-2/
我看到了这段代码:
public interface IRepository<T> where T : class
{
void Add(T entity);
void Update(T entity);
void Delete(T entity);
void Delete(Expression<Func<T, bool>> where);
IEnumerable<T> Query(Expression<Func<T, bool>> filter);
IEnumerable<T> QueryObjectGraph(Expression<Func<T, bool>> filter, string children);
}
我不是c#程序员,(我是python程序员)任何人都可以解释这个界面吗?
此存储库应将实体添加到存储库,或更新现有实体,或删除现有实体,但我无法理解此定义:
void Delete(Expression<Func<T, bool>> where);
和其他人:
IEnumerable<T> Query(Expression<Func<T, bool>> filter);
这是为了检索一些想要的实体? (如何通过过滤器?是一个像
的地图{"id": ">5", "color": ["red", "blue"]},
或者是一个简单的DQL查询STRING?
IEnumerable<T> QueryObjectGraph(Expression<Func<T, bool>> filter, string children);
我不明白这另一个功能,孩子们的座位是什么? :/
答案 0 :(得分:0)
Expression<Func<T, bool >>
通常对谓词感到满意,通常称为lambda表达式
x => x.Property > 5 && x.OtherProperty.Contains( "foo" )
编译器使用lambdas创建表达式。
答案 1 :(得分:0)
您提出的问题可归纳为what is linq。一旦掌握了这个主题,就应该开始理解你所展示的代码。
Func<>
(here)是.NET的一个非常酷的部分。它使我们能够写出lambda更酷的东西! (php has lambda's too)
并且
Expression<>
(here)是一种定义上述所有内容的方法,以便可以“稍后解释”。最明显的例子是实体框架,它将在需要时将lambda表达式转换为SQL。