今天在整理代码的时候发现这个。通过灵活利用委托实现动态(条件)查询。
直接上代码:
int articleId = 119; var firstArticle = new ArticleDac().GetArticles( articleDbSet => articleDbSet.AsQueryable().FirstOrDefault(x => x.id == articleId) ); 或者也可以这样 var firstArticle = new ArticleDac().GetArticles( articleDbSet => { var query = (IQueryable<Article>) articleDbSet; query = query.Where(x => x.id==articleId); return query.OrderBy(x=>x.id).FirstOrDefault(); } ); public class ArticleDac { ... public Article GetArticles(Func<IDbSet<Article>, Article> func) { using(var db = xx) { return func(db.Articles); } } ... }