【发布时间】:2012-09-06 14:42:34
【问题描述】:
我在 SQL 中有 4 个表:DocumentType,ClearanceDocument,Request,RequestDocument。
我想在页面加载和用户选择一个请求时,在RequestTable 中显示所有基于clearanceType 的文档,并在RequestDocument 和exist 设置is_exist=true 时签入
我已经用SqlServer Query Editor 编写了这个查询以获得这个场景的结果,但是我不能把这个查询转换成 Linq
select *,
is_Orginal=
(select is_orginal from CLEARANCE_REQUEST_DOCUMENT
where
DOCUMENT_ID=a.DOCUMENT_ID and REQUEST_ID=3)
from
DOCUMENT_TYPES a
where
DOCUMENT_ID in
(select DOCUMENT_ID from CLEARANCE_DOCUMENTS dt
where
dt.CLEARANCE_ID=
(SELECT R.CLEARANCE_TYPE FROM CLEARANCE_REQUEST R
WHERE
R.REQUEST_ID=3))
我在 linq 中写了这个查询,但不起作用
var list = (from r in context.CLEARANCE_REQUEST
where r.REQUEST_ID == 3
join cd in context.CLEARANCE_DOCUMENTS on r.CLEARANCE_TYPE equals cd.CLEARANCE_ID
join dt in context.DOCUMENT_TYPES on cd.DOCUMENT_ID equals dt.DOCUMENT_ID into outer
from t in outer.DefaultIfEmpty()
select new
{
r.REQUEST_ID,
cd.CLEARANCE_ID,
t.DOCUMENT_ID,
t.DOCUMENT_NAME,
is_set=(from b in context.CLEARANCE_REQUEST_DOCUMENT where
b.REQUEST_ID==r.REQUEST_ID && b.DOCUMENT_ID==t.DOCUMENT_ID
select new{b.IS_ORGINAL})
}
).ToList();
我想将此查询转换为LINQ。请帮我。谢谢。
【问题讨论】:
-
@M.B.: 究竟是什么不起作用?您是否收到编译器错误?运行时异常?出乎意料的结果?
-
@M.B. - 对不起,我编辑了帖子,你发布的后面部分已经消失了。你能再把它说一遍吗?我的错。
-
@Shaks:np,我编辑问题并添加我的 linq 代码。
-
请用简单的英语解释查询应该返回什么。
-
SQL 返回
DOCUMENT_TYPES.*和BIT为is_original,但您的LINQ 尝试从一系列对象返回属性。它们完全不同。
标签: c# linq entity-framework