我有用户实体并与许多产品实体相关,我需要一种方法来获取用户实体及其产品的子集而不是所有产品。
var user = User.Include("Product").ToList(); // it returnes all the products.
我需要一种方法来仅用 15 个产品返回用户。
提前致谢...
最佳答案
您无法以其他方式过滤或影响加载到导航属性中的数据。当您使用相关实体的预先加载或延迟加载时,EF 只是不带任何条件地执行 LEFT OUTER JOIN。
您可以返回包含用户及其 15 个产品的匿名对象:
var query = from u in db.Users
select new {
User = u,
Top15Products = u.Products.Take(15)
};
注意 - 如果您加载了用户实体,那么您可以加载相关实体的过滤集合:
var user = db.Users.Find(1);
db.Entry(user)
.Collection(u => u.Products)
.Query()
.Take(15)
.Load();
此方法描述于Loading Related Entities文章。
关于.net - 获取实体导航属性的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22504006/