如下列出查询表达式,常用操作符,与SQL语句对应。
where 关键字的使用 public voidMyWhere()
{
NorthwindDataContextdc = newNorthwindDataContext();
//查询产品名称以L开头的记录varquery = fromp indc.Products
wherep.ProductName.StartsWith("L")
selectp;
//两个where过滤两个条件,第二个where会在第一个where基础上进行第二次条件谓词varquery1 = fromp indc.Products
wherep.ProductName.StartsWith("L")
wherep.ProductName.EndsWith("i")
selectp;
foreach(Productsitem inquery1)
{
Response.Write(item.ProductID + " | "+ item.ProductName + "
");
}
}
join 连接操作
拖动数据库的Orders表到设计器中来,结果如下
设计器会根据表在数据库中设定的依赖关系,生成表对象之间的依赖关系,查看表关系,可以打开SQL Server 管理器,打开数据库右键点击表,选择查看依赖关系。
可以看到Order依赖Customer
如果你想给表添加或者管理一个FK的话可以看下图,如果想添加就右击、键目录、添加键,如下图
再点击表和列规范后面的按钮
选择主表和列对应本表那个列(外键)确定,点保存,刷新一下就可以看到了
代码:
public voidMyJoin()
{
// PERFORMING JOINSNorthwindDataContextdc = newNorthwindDataContext();
dc.Log = Console.Out;
varquery = fromc indc.Customers
joino indc.Orders onc.CustomerID equalso.CustomerID
orderbyc.CustomerID
select new{
c.CustomerID,
c.CompanyName,
c.Country,
o.OrderID,
o.OrderDate
};
foreach(varitem inquery)
{
Response.Write(item.CustomerID + " | "+ item.CompanyName
+ " | "+ item.Country + " | "+ item.OrderID
+ " | "+ item.OrderDate + "
");
}
}
组合数据项Group
拖动Categories 表到设计器,如下图
代码如下:
public voidMyGroup()
{
NorthwindDataContextdc = newNorthwindDataContext();
varquery = fromp indc.Products //from谓词orderbyp.Categories.CategoryName ascending//排序groupp byp.Categories.CategoryName intog //以名字进行分组,导入到新的集合,Key是分组的CategoryName当前名,Value 是分组的Products对象select new{ Categories = g.Key, Products = g }; //建立一个匿名对象,分别,将Key,和Value放进去foreach(varitem inquery)
{
Response.Write("分组Key,CategoryName:"+ item.Categories + "
");
foreach(varinnerItem initem.Products)
{
Response.Write( innerItem.ProductName + "
");
}
Response.Write("
}
}
LINQ 调用存储过程
设计器的右侧是用来显示和定义存储过程的地方,可以把存储过程拖进来,在使用的时候会变成LINQ语法DataContext对象中的一个方法
代码如下:
public voidMyProcedure()
{
NorthwindDataContextdc = newNorthwindDataContext();
//ISingleResult< Ten_Most_Expensive_Products_个结果 > result = dc.Ten_Most_Expensive_Products(); //单个返回序列结果
//返回结果类型和怪,出现了中文,这是我直接拖动自动生成的,我们可以替换,这个_个结果在Northwind.designer.cs 文件中ISingleResult result = dc.Ten_Most_Expensive_Products();
foreach(varitem inresult)
{
Response.Write(item.TenMostExpensiveProducts + " | "+ item.UnitPrice + "
");
// 属性名称,对应 存储过程中的 结果列名称,SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice}
}
替换方法: