数据结构
还是先看图再说事吧!下面截图就是这个示例代码中使用到的3个数据表结构和各自的关系。
这三个表的基本作用是这样的:Products数据表用来存储产品数据,Customers数据表用来存储客户数据,而CustomersProducts数据表则是用来存储客户订购的产品信息。
代码说明通过使用LINQ to SQL查询指定编号的客户订购的所有的产品数据,并且将其打印到控制台上。示例代码中查询的客户编号是ALFKI。
关键代码
DatabaseDataContext db = new DatabaseDataContext();db.Log = Console.Out;
var CustomerProducts =
from ProductObject in db.Products
from CustomerObject in db.Customers
from CPObject in db.CustomersProducts
where ProductObject.ProductID == CPObject.ProductID &&
CustomerObject.CustomerID == CPObject.CustomerID &&
CustomerObject.CustomerID == "ALFKI"
select new {
ProductObject,
CustomerID = CustomerObject.CustomerID,
CustomerName = CustomerObject.ContactName};
foreach (var ProductObject in CustomerProducts)
{
Console.WriteLine("---------------------");
Console.WriteLine("CustomerID={0}",
ProductObject.CustomerID);
Console.WriteLine("CustomerName={0}",
ProductObject.CustomerName);
Console.WriteLine("ProductName={0}",
ProductObject.ProductObject.ProductName);
}
LINQ to SQL生成了类似如下的SQL命令:
SELECT [t0].[ProductID], [t0].[ProductName], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t1].[CustomerID],
[t1].[ContactName] AS [CustomerName]
FROM [dbo].[Products] AS [t0], [dbo].[Customers] AS [t1],
[dbo].[CustomersProducts] AS [t2]
WHERE ([t0].[ProductID] = [t2].[ProductID]) AND
([t1].[CustomerID] = [t2].[CustomerID]) AND
([t1].[CustomerID] = @p0)
-- @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [ALFKI]
-- Context: SqlProvider(Sql2005)
-- Model: AttributedMetaModel Build: 3.5.30729.1
完整代码下载地址:http://u.115.com/file/f21c3fc56其中已经包含了测试所需的数据库。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include #include int main(void) { char string[10…