我正在使用Entity Framework。我必须应用两个表的连接但我想要的是,如果有一个表Category
,列categoryid
作为外键,它是整数数据类型,另一个表Products
,列{ {1}}作为主键,也是整数数据类型。
现在我只需要从id
表中选择Products
表中包含id
的记录。
这是我的代码:
Category
答案 0 :(得分:2)
你可以这样:
List<int> categoryIds = new List<int>(){ 10, 11, 12 };
datalist.DataSource = (from c in objCategory
join p in objProducts
on c.categoryid equals p.categoryid
where categoryIds.Contains(c.categoryid)
select new
{
c.FilePath,
c.ItemName,
c.Description,
p.image_url,
p.name,
p.price
}).ToList();
答案 1 :(得分:1)
不是将所有数据提取到内存中然后加入它,而是更好地创建导航属性并通过这些属性获取数据。在这种情况下,所有连接都将在数据库中工作,您将只从数据库中获取过滤数据。解决方案就像
一样class Category
{
public int CategoryId { get; set; }
public string Description{ get; set; }
public string FilePath {get;set;}
public string ItemName {get;set;}
public virtual ICollection<Product> Product{ get; set; }
}
class Product
{
public int ProductId { get; set; }
public string name{ get; set; }
public int CategoryId { get; set; }
public string Product.image_url {get;set;}
public int price {get;set;}
public virtual Category Category{ get; set; }
}
现在您只需要调用以下查询
datalist.DataSource = (from p in objCategory.Include("Product")
select new
{
p.FilePath,
p.ItemName,
p.Description,
p.Product.image_url,
p.Product.name,
p.Product.price
}).ToList();