真正基本的LINQ问题,但有人可以告诉我它是如何从多个数据库表中处理数据的。
例如,如果您有一个Products
表,那么使用DBML可以获得一个很好的Product
对象,您可以查询,更新,创建等等。(Product.Name
,{{1}所有非常好。
但是,如果我有一个LINQ查询在一堆其他表上加入Product.Price
并将这些表中的列带回来。 DB表与对象之间没有1:1的映射,那么返回的是什么?
EG。如果它是Product
和Product
的组合,我将如何查询,例如,客户名称:
Customer
默认情况下是否作为数据集返回?
答案 0 :(得分:2)
您通常会(通常,但并非总是如此)构成您的查询将返回其集合的匿名类型。您可以为这些属性命名,然后可以像使用任何其他类型一样访问它们。
答案 1 :(得分:1)
它创造了所谓的“匿名类型”。您可以像这样使用它:
var x = from p in context.Products
join o in OrderLines in p.Id = o.ItemId
select new // you are creating your anonymous type here
{
OrderId = o.Id,
ProductName = p.Name,
OrderDate = o.Date
}
foreach (var y in x)
{
Console.WriteLine("Product name: " + y.ProductName);
}
答案 2 :(得分:0)
如果您的密钥设置正确,您应该能够进行Product.Customers等查询或其他方式。或者你可以加入两个表,语法类似于:
from p in context.Products
join c in context.Customers on p.CId equals c.Id
答案 3 :(得分:0)
您通常会拥有匿名类型或自定义对象,具体取决于查询的select子句
from p in context.Products
join //with other tables with appropriate join conditions
select new
{
prop1 = p.ProductName,
prop2 = p.ProductId
}
这将返回一个匿名类型,其中包含2个属性prop1& PROP2
from p in context.Products
join //with other tables with appropriate join conditions
select new MyProduct()
{
prop1 = p.ProductName,
prop2 = p.ProductId
}
这将返回名为MyProduct&的自定义对象。您可以在对象初始值设定项的块中设置其属性
答案 4 :(得分:0)
您可以在数据库中创建一个View,并通过Linq-to-SQL映射到Object。