EF linq inner join
1、model
注意点1:List<ProductSet> Products的Products必须继承ICollection<T>;
注意点2:ProductSet.CategoryID属性,要XXXXXID;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[Table("ProductSet")] public class ProductSet { public int ID { get; set; } [Required] [StringLength(50)] public string Name { get; set; } public int CategoryID { get; set; } public decimal Price { get; set; } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[Table("Category")] public class Category { public int Id { get; set; } public string Name { get; set; } public List<ProductSet> Products { get; set; } }
2、执行
static void Main(string[] args) { using (KTStoreModel context = new KTStoreModel()) { context.Database.Log = Console.WriteLine; var products = from category in context.Category from product in category.Products select product; Console.WriteLine("执行"); foreach (var p in products) { Console.WriteLine(p.Name); } } Console.Read(); }
================================================
相对于上面需要List<ProductSet> Products和ProductSet.CategoryID,用from in join in on equals更加明确,也更加方便
using (var context = new KTStoreModel()) { context.Database.Log = Console.WriteLine; var query = from product in context.ProductSet join category in context.Category on product.CategoryID equals category.Id select new { ID = product.ID, Name = product.Name, Category = category.Name, Price = product.Price }; Console.WriteLine("执行"); foreach (var product in query) { Console.WriteLine($"ID:{product.ID}\tName:{product.Name}\tCategory:{product.Category}\tPrice:{product.Price}"); } }