首页 新闻 会员 周边 捐助

linq where

0
悬赏园豆:10 [已解决问题] 解决于 2013-12-24 14:54

谁知道在linq中的where()里面怎么写bool类型的条件啊,因为它总会自动生成一个@p__linq__0这种值赋值给bool变量了,怎么解决这个方法罗!谁帮我解决了,我给他豆子哟,拜托了啦

最后运行出来的sql语句,在sqlserver中是这样的

WHERE (1 = [Extent1].[State]) AND ([Extent1].[IsReply] = @p__linq__0)

问题补充:

SELECT
[Project1].[Id] AS [Id],
[Project1].[SightId] AS [SightId],
[Project1].[SightName] AS [SightName],
[Project1].[Contents] AS [Contents],
[Project1].[UserId] AS [UserId],
[Project1].[UserName] AS [UserName],
[Project1].[ClientId] AS [ClientId],
[Project1].[IsReply] AS [IsReply],
[Project1].[AddTime] AS [AddTime],
[Project1].[IpAddress] AS [IpAddress],
[Project1].[State] AS [State],
[Project1].[SortNum] AS [SortNum]
FROM ( SELECT
    [Extent1].[Id] AS [Id],
    [Extent1].[SightId] AS [SightId],
    [Extent1].[SightName] AS [SightName],
    [Extent1].[Contents] AS [Contents],
    [Extent1].[UserId] AS [UserId],
    [Extent1].[UserName] AS [UserName],
    [Extent1].[ClientId] AS [ClientId],
    [Extent1].[IsReply] AS [IsReply],
    [Extent1].[AddTime] AS [AddTime],
    [Extent1].[IpAddress] AS [IpAddress],
    [Extent1].[State] AS [State],
    [Extent1].[SortNum] AS [SortNum]
    FROM [dbo].[SightPointComm] AS [Extent1]
    WHERE (1 = [Extent1].[State]) AND ([Extent1].[IsReply] = @p__linq__0)
)  AS [Project1]
ORDER BY [Project1].[IsReply] ASC, [Project1].[Id] DESC

今年过年前瘦8斤的主页 今年过年前瘦8斤 | 初学一级 | 园豆:94
提问于:2013-12-24 12:53
< >
分享
最佳答案
0

@p__linq__0是参数化查询了,整个语句的后面,有@p__linq__0这个参数的值,或者,你看不懂我说的什么,你可以把生成的整条sql发过来我指给你。

PS:记得参数化查询调用的是sp_executesql这个存储过程

收获园豆:5
nil | 小虾三级 |园豆:886 | 2013-12-24 13:01

是这样的吗?那我这个bool类型的值怎么复制没用呢?

今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 13:02

@魔女小溪: 你把生成的整条sql贴上来,不要贴部分,你可以把敏感的sql给XX掉,

nil | 园豆:886 (小虾三级) | 2013-12-24 13:05

@_nil: 贴出来了

今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 13:06
其他回答(7)
0

数据库里就是存着 true 和 false吗????

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-12-24 13:13
0

这个会对你的业务有影响吗?与你直接到sql中查是一样的,只是写法不一样,因为你是用linq to entity 查询最终还是要转成sql语句,如果 你的 IsRelay 是int类型那换种 写法就可以了 where(s=>s.Isreplay==replqyResult ? 1 : 0 )

收获园豆:5
Zery | 园豆:6151 (大侠五级) | 2013-12-24 13:26

是bit类型的,请问怎么解决呢?

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 13:32

@魔女小溪:  我想知道你这么写,对你查询的结果有影响吗?

支持(0) 反对(0) Zery | 园豆:6151 (大侠五级) | 2013-12-24 13:38

@Zery: 我们老板,要通过这个bool类型的字段来分成两种不同的查询结果

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 13:42

@魔女小溪: 那代码就是这么写的没有错啊,为什么还要改这个生成的sql语句?

支持(0) 反对(0) Zery | 园豆:6151 (大侠五级) | 2013-12-24 13:47

@Zery: 它报错啊!说什么缺少“)”

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 13:49
-1

[IsReply] = @p__linq__0)

这个地方是因为你的那个e.IsReplay是一个bool类型的值

平常心队长 | 园豆:1113 (小虾三级) | 2013-12-24 13:26

大侠啊,可有解决方法啊,拜托你了,求求你了

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 13:32
0

你data是List<> 的吧,是的话在where后面加上.ToList()

鳳梨酥 | 园豆:287 (菜鸟二级) | 2013-12-24 13:46
0

额,数据库里面没有bool类型,只有一个bit类型,所以吗,自然要传入参数判断0还是1。

ocean | 园豆:824 (小虾三级) | 2013-12-24 14:06
0

你IsReply是什么类型的?

************** | 园豆:124 (初学一级) | 2013-12-24 14:42
0

写Linq再去研究它生成的SQL,那真是一件痛苦的事情,如果没有很严重的性能问题,根本不用去研究这个。只要结果对就行了,你上面的语法没有什么问题。

空明流光 | 园豆:111 (初学一级) | 2013-12-24 14:49

已经解决了,呵呵

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2013-12-24 14:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册