Linq to sql 中如何进行 left join
2008-07-24 17:09
316 查看
可以用 into 语法,配合 DefaultIfEmpty() 方法加载右侧表中的空值。
例子:
var query =
from r in db.Roles
join sr in
(
from ss in db.StaffInRoles
where ss.StaffId == staffId
select ss
)
on r.Id equals sr.RoleId
into x
from y in x.DefaultIfEmpty()
select new RoleInfo
{
RoleId = r.Id,
RoleName = r.Name,
IsSet = y != null
};
注意这里最后可以通过 y != null 来判断右值是否为空。
这个 Linq to sql 语句生成的对应 SQL 为:
exec sp_executesql N'SELECT [t0].[Id] AS [RoleId], [t0].[Name] AS [RoleName],
(CASE
WHEN [t2].[test] IS NOT NULL THEN 1
ELSE 0
END) AS [IsSet]
FROM [Role] AS [t0]
LEFT OUTER JOIN (
SELECT 1 AS [test], [t1].[StaffId], [t1].[RoleId]
FROM [StaffInRole] AS [t1]
) AS [t2] ON ([t0].[Id] = [t2].[RoleId]) AND ([t2].[StaffId] = @p0)',N'@p0 int',@p0=1
over.
例子:
var query =
from r in db.Roles
join sr in
(
from ss in db.StaffInRoles
where ss.StaffId == staffId
select ss
)
on r.Id equals sr.RoleId
into x
from y in x.DefaultIfEmpty()
select new RoleInfo
{
RoleId = r.Id,
RoleName = r.Name,
IsSet = y != null
};
注意这里最后可以通过 y != null 来判断右值是否为空。
这个 Linq to sql 语句生成的对应 SQL 为:
exec sp_executesql N'SELECT [t0].[Id] AS [RoleId], [t0].[Name] AS [RoleName],
(CASE
WHEN [t2].[test] IS NOT NULL THEN 1
ELSE 0
END) AS [IsSet]
FROM [Role] AS [t0]
LEFT OUTER JOIN (
SELECT 1 AS [test], [t1].[StaffId], [t1].[RoleId]
FROM [StaffInRole] AS [t1]
) AS [t2] ON ([t0].[Id] = [t2].[RoleId]) AND ([t2].[StaffId] = @p0)',N'@p0 int',@p0=1
over.
相关文章推荐
- Linq to sql 中如何进行 left join
- Linq to sql 中如何进行 left join
- Linq to sql 中如何进行 left join
- Linq to sql 中如何进行 left join
- Linq to sql 中如何进行 left join
- Linq to sql 中如何进行 left join
- Linq to sql 中如何进行 left join
- LINQ TO SQL 如何进行增删改查
- 如何:创建 LINQ to SQL 类之间的关联(关系)(O/R 设计器)
- SQL语句进行left join的时候发生Cannot resolve collation conflict for equal to operation.错误 SQL语句进行left join的时候发生Cannot resolve collation
- mvc Linq TO sql 数据模型添加标记进行模型验证
- LINQToSQL中如何更好的手动设置导航字段,并返回实名类型而不是匿名类型
- 在MVC2.0 中 进行 LINQTOSQL 实体统一验证方法(下)
- LINQ To SQL 之 Expression中如何定义String类型的GreaterThanOrEqual (转)
- Linq To SQL LEFT OUTER JOIN (Left Join)
- 在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测 推荐
- [代码]如何使用带参数的存储过程(LINQ to SQL)
- 如何追踪LINQ To SQL 生成的SQL
- Linq To Sql模式中自动生成T-SQL增删改操作系列~PropertyChanged事件实现在子类中记录属性的变化,在基类中进行统一处理
- 如何在ASP.NET项目里面正确使用Linq to Sql