[已解决问题] 求自然连接查询Sql语句的Linq表达式!
提问时间: 2008-03-28 08:41
悬赏分:10 浏览:596 次
最近学习Linq,有些不懂,求如下sql的Linq表达式:
(1)select A.a,B.b
      from t1 as A,t2 as B
        where A.ID=B.ID ;

 (2) delete from t1 as A, t2 as B
            where A.ID=B.ID ; (要表达的意思是:如果从用户表中删除用户信息则把他在评论表中的评论也全部删除)

谢谢

提问者:Kevin Li - 初学一级
最佳答案
var q = from a in db.Customers
        from b in db.Employees
        where a.City == b.City
        select new
        {
            a.City,
            b.Address
        };
SELECT [t0].[City], [t1].[Address]
FROM [dbo].[Customers] AS [t0], [dbo].[Employees] AS [t1]
WHERE [t0].[City] = [t1].[City]

对于多表删除好像是一对多关系,参看这个:
Order与OrderDetail是一对多关系,首先DeleteOnSubmit其OrderDetail(多端),其次DeleteOnSubmit其Order(一端)。因为一端是主键。

var orderDetails =
    from o in db.OrderDetails
    where o.Order.CustomerID == "WARTH" && o.Order.EmployeeID == 3
    select o;
var order =
    (from o in db.Orders
     where o.CustomerID == "WARTH" && o.EmployeeID == 3
     select o).First();
foreach (OrderDetail od in orderDetails)
{
    db.OrderDetails.DeleteOnSubmit(od);
}
db.Orders.DeleteOnSubmit(order);
db.SubmitChanges();
2008/3/29 10:27:02 回答者:李永京


提问者对于答案的评价:3q
其它回答(3)
晕  要代码啊 
不知道自己去网上搜吗?
你在用之前 先好好学习好 MSDN 上面都有的
3个月前   回答者:yeyang - 菜鸟二级
linq sql 看了李兄的回答还是一知半解,还是先看看语法去
3个月前   回答者:Vincent Love - 菜鸟二级
 Product pro = db.Products.Single(b => b.Category.CategoryName == categoryName);
            db.Products.DeleteOnSubmit(pro);
            db.SubmitChanges();
这里例子是我用来删除报表里面名为categoryName的Category条目时候,同时把Products表中的记录删除,我不知道你的数据库的具体东西,按照这样的方法删除吧
(不过得先建立外键关系)
括号里面的是LAMBDA表达式
3个月前   回答者:NafLian - 菜鸟二级
评论
3个月前   Kevin Li :
看来研究得人不多,算了,还是用传统得sql
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除