谁知道在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
@p__linq__0是参数化查询了,整个语句的后面,有@p__linq__0这个参数的值,或者,你看不懂我说的什么,你可以把生成的整条sql发过来我指给你。
PS:记得参数化查询调用的是sp_executesql这个存储过程
是这样的吗?那我这个bool类型的值怎么复制没用呢?
@魔女小溪: 你把生成的整条sql贴上来,不要贴部分,你可以把敏感的sql给XX掉,
@_nil: 贴出来了
数据库里就是存着 true 和 false吗????
这个会对你的业务有影响吗?与你直接到sql中查是一样的,只是写法不一样,因为你是用linq to entity 查询最终还是要转成sql语句,如果 你的 IsRelay 是int类型那换种 写法就可以了 where(s=>s.Isreplay==replqyResult ? 1 : 0 )
是bit类型的,请问怎么解决呢?
@魔女小溪: 我想知道你这么写,对你查询的结果有影响吗?
@Zery: 我们老板,要通过这个bool类型的字段来分成两种不同的查询结果
@魔女小溪: 那代码就是这么写的没有错啊,为什么还要改这个生成的sql语句?
@Zery: 它报错啊!说什么缺少“)”
[IsReply] = @p__linq__0)
这个地方是因为你的那个e.IsReplay是一个bool类型的值
大侠啊,可有解决方法啊,拜托你了,求求你了
你data是List<> 的吧,是的话在where后面加上.ToList()
额,数据库里面没有bool类型,只有一个bit类型,所以吗,自然要传入参数判断0还是1。
你IsReply是什么类型的?
写Linq再去研究它生成的SQL,那真是一件痛苦的事情,如果没有很严重的性能问题,根本不用去研究这个。只要结果对就行了,你上面的语法没有什么问题。
已经解决了,呵呵