[英]traversing one to many relationships in entity framework
我在使用EF 5的asp.net站点中使用LINQ-To-SQL找出如何遍历一对多关系时遇到了麻烦。我已经在类文件中建立了关系,但是当我尝试从父对象转到子级时在我的where子句中,我没有给出要过滤的子列的列表。 任何人都可以告诉我我的代码有什么问题,我是EF和LINQ的新手。
Product.cs:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Category Category { get; set; }
}
}
Category.cs:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual IList<Product> Products { get; set; }
}
代码隐藏:
using (var db = new Compleate())
{
rpBooks.DataSource = (from c in db.Categories
where c.Products.Name == "Books"
select new
{
c.Name
}).ToList();
}
您想要书籍类别中的所有产品吗?
from p in db.Products
where p.Category.Name == "Books"
select new
{
p.Name
}
或者您是否希望所有类别都包含称为书籍的产品?
from c in db.Categories
where c.Products.Contains( p => p.Name == "Books")
select new
{
c.Name
}
顺便说一句,如果您只选择名称,则可以跳过选择部分中的匿名类型...
select p.name
好的,我不得不更新代码隐藏看起来像:
using (var db = new Compleate())
{
rpBooks.DataSource = (from c in db.Categories
join p in db.Products on c.ID equals p.id
where c.Products.Name == "Books"
select new
{
c.Name
}).ToList();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.