LINQ中的简单查询
问题描述:
我有3个表格。基本上,我有这样的结构:LINQ中的简单查询
Customer
--------
IDCustomer
NameCustomer
Product
«««««««
IDProduct
NameProduct
Order
«««««
IDCustomer
IDProduct
如何得到这样的结果,使用LINQ:
Result
««««««
NameCustomer
NameProduct
提前感谢!
答
假设你没有在数据库中建立正确的关系(或者你有没有产生你的关系导航属性),你可以做到以下几点:
var result = from c in _context.Customer
join o in _context.Order on c.IDCustomer equals o.IDCustomer
join p in _context.Product on o.IDProduct equals p.IDProduct
select new { c.NameCustomer, p.NameProduct }
这将是容易得多,但是,要将适当的外键添加到数据库并允许实体框架(或LINQ to SQL)为您生成导航属性。如果是这样的话,这将是那么容易,因为:
var result = _context.Order.Select(o => new
{
o.Customer.NameCustomer,
o.Product.NameProduct
});
答
LINQ的整体美感的是,这应该是所有自动为您完成自动生成的对象。
确保您的表关系在将它们移动到您的DBML文件之前在SQL Server中设置。在此之后,您的客户表将附有订单,其中您的产品将附加到您的订单中。
如从客户表(LINQ)中选择将给你一个客户列表,其中将有一个Order对象的IENumerable列表附加到每个客户列表。
答
from t1 in Product
join t2 in Order on t1.IDProduct equals t2.IDProduct
join t3 in Customer on t2.IDCustomer equals t3.IDCustomer
select new { t1.NameProduct, t3.NameCustomer}
可以使用linqpad.exe直接对数据库
一个测试你的LINQ查询加入会做 – Magnus 2011-04-13 14:13:03