条件过滤的目的是什么?如果是显示,请在上层应用层中处理。如果你实际上在谈论不同的业务对象(即,一个用户获得一种类型的对象,另一个用户获得该对象的子类型),那么你可以创建不同的类,并为这些类映射,并使用代码优先EF技术
EF是一个数据访问组件,特别是一个对象关系映射器,即,它将数据库数据映射到业务对象,对吗?
您可以做的一件事是创建一个包装流动器DbContext,其逻辑用于过滤相关用户的列,
public class EfWrapper:Context { private DbContext _dbContext; public EfWrapper(DbContext context){ _dbContext=context; } public IEnumerable <User> getUsers(User user){ //if ... write your logic to choose correct projection var users= from user in context.Users select new UserWithLessColumns { id= user.Id, Name= user.Name }); return users; } }