利用将的SQL语句转换为LINQ的语句形式

Jerikc 2011-11-29 10:41:51

/*通过field_baseinfo.field_code查询得到crop_manageinfo.field_base_id
条件:field_baseinfo.id = crop_manageinfo.field_base_id
*/

select crop_manageinfo.field_base_id from crop_manageinfo where crop_manageinfo.field_base_id =(
select field_baseinfo.id from field_baseinfo where field_code = '1-1' )


请问如何利用将上面的SQL语句转换为LINQ的语句形式。
谢谢。
...全文
319 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-11-30
  • 打赏
  • 举报
回复
var first =(from finfo in field_baseinfo
where finfo.field_code == "1-1"
select finfo.id).First();
Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sandy945 的回复:]
分别执行,看看 (from finfo in field_baseinfo
where finfo.field_code == "1-1"
select finfo.id).First()
有值么
[/Quote]

crop_manageinfo.Where(a=>a.field_base_id==field_baseinfo.Where(b=>b.field_code=="1-1"
).Select(c=>c.id).Single()).Select(d=>d.field_base_id);


这种写法。可以编译通过。但是没能取出值。
Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sandy945 的回复:]
分别执行,看看 (from finfo in field_baseinfo
where finfo.field_code == "1-1"
select finfo.id).First()
有值么
[/Quote]
按照这种写法,出现上下文无field_baseinfo。怎么解决。
阿非 2011-11-30
  • 打赏
  • 举报
回复
分别执行,看看 (from finfo in field_baseinfo
where finfo.field_code == "1-1"
select finfo.id).First()
有值么
Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xcx573 的回复:]
C# code

crop_manageinfo.Where(a=>a.field_base_id==field_baseinfo.Where(b=>b.field_code=="1-1"
).Select(c=>c.id).Single()).Select(d=>d.field_base_id);
[/Quote]
结果没有取出来。怎么回事。
Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sandy945 的回复:]
return dataContext.crop_manageinfo.Where(a => a.field_base_id == dataContext.field_baseInfo.Where(b => b.field_code == fieldCode
).Select(c => c.id).Single()).Select(d => d.field_base_id).Single();……
[/Quote]
可以了。通过了。谢谢。万分感谢。散分给您。thank you 。
阿非 2011-11-30
  • 打赏
  • 举报
回复
你那列是数值型的

你应该修改返回值 为 long?
阿非 2011-11-30
  • 打赏
  • 举报
回复
return dataContext.crop_manageinfo.Where(a => a.field_base_id == dataContext.field_baseInfo.Where(b => b.field_code == fieldCode
).Select(c => c.id).Single()).Select(d => d.field_base_id).Single().ToString();
Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sandy945 的回复:]
return dataContext.crop_manageinfo.Where(a => a.field_base_id == dataContext.field_baseInfo.Where(b => b.field_code == fieldCode
).Select(c => c.id).Single()).Select(d => d.field_base_id).Single();……
[/Quote]
编译的时候出现,
错误 7 无法将类型“long?”隐式转换为“string” D:\WORK\Farm130\MapService130\App_Code\BLL\CropManageService.cs 103 42 D:\...\MapService130\
阿非 2011-11-30
  • 打赏
  • 举报
回复
return dataContext.crop_manageinfo.Where(a => a.field_base_id == dataContext.field_baseInfo.Where(b => b.field_code == fieldCode
).Select(c => c.id).Single()).Select(d => d.field_base_id).Single();

Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 sandy945 的回复:]
我通过我上面的SQL语句,应该是他的值是1.
---------------
?
[/Quote]
我用SQL语句在查询分析器里面运行,得到的结果是1
阿非 2011-11-30
  • 打赏
  • 举报
回复
我通过我上面的SQL语句,应该是他的值是1.
---------------
?
Jerikc 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xcx573 的回复:]
首先得保证
select field_baseinfo.id from field_baseinfo where field_code = '1-1'
有且只有一条结果
要不改用FirstOrDefault()

最后的结果如果要单个值也用这个,多个就ToList()
[/Quote]
你的那种写法

public string FindFieldIdByFieldcode(string fieldCode)
{

return dataContext.crop_manageinfo.Where(a => a.field_base_id == dataContext.field_baseInfo.Where(b => b.field_code == fieldCode
).Select(c => c.id).Single()).Select(d => d.field_base_id).ToString();


}

我写的一个函数,但是返回的值是

SELECT [t0].[field_base_id]
FROM [dbo].[crop_manageinfo] AS [t0]
WHERE [t0].[field_base_id] = ((
SELECT [t1].[id]
FROM [dbo].[field_baseInfo] AS [t1]
WHERE [t1].[field_code] = @p0
))


正常的话,我通过我上面的SQL语句,应该是他的值是1.
不知道怎么回事。
肖无疾 2011-11-30
  • 打赏
  • 举报
回复
首先得保证
select field_baseinfo.id from field_baseinfo where field_code = '1-1'
有且只有一条结果
要不改用FirstOrDefault()

最后的结果如果要单个值也用这个,多个就ToList()
Jerikc 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jerikc 的回复:]
引用楼主 jerikc 的回复:
SQL code

/*通过field_baseinfo.field_code查询得到crop_manageinfo.field_base_id
条件:field_baseinfo.id = crop_manageinfo.field_base_id
*/

select crop_manageinfo.field_base_id from crop……
[/Quote]初始化过了。
Jerikc 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xcx573 的回复:]
C# code

crop_manageinfo.Where(a=>a.field_base_id==field_baseinfo.Where(b=>b.field_code=="1-1"
).Select(c=>c.id).Single()).Select(d=>d.field_base_id);
[/Quote]
很不错。我需要的。谢谢。我试试。
q107770540 2011-11-29
  • 打赏
  • 举报
回复
要先初始化datacontxt啊
Jerikc 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 jerikc 的回复:]
SQL code

/*通过field_baseinfo.field_code查询得到crop_manageinfo.field_base_id
条件:field_baseinfo.id = crop_manageinfo.field_base_id
*/

select crop_manageinfo.field_base_id from crop_manageinfo wher……
[/Quote]
出现crop_manageinfo和field_baseinfo找不到,怎么解决呢?
如果用Lambda语句如何表示呢?
肖无疾 2011-11-29
  • 打赏
  • 举报
回复

crop_manageinfo.Where(a=>a.field_base_id==field_baseinfo.Where(b=>b.field_code=="1-1"
).Select(c=>c.id).Single()).Select(d=>d.field_base_id);
q107770540 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 jerikc 的回复:]
SQL code

/*通过field_baseinfo.field_code查询得到crop_manageinfo.field_base_id
条件:field_baseinfo.id = crop_manageinfo.field_base_id
*/

select crop_manageinfo.field_base_id from crop_manageinfo where crop_manageinfo.field_base_id =(
select field_baseinfo.id from field_baseinfo where field_code = '1-1' )
[/Quote]
也可以 这样:

var query=from cm in crop_manageinfo
join fb in field_baseinfo
on cm.field_base_id equals fb.id
where fb.field_code == "1-1"
select cm.field_base_id ;
加载更多回复(1)

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧