linq中参数超过10以后会报错,大家有好的解决方案吗???????????

cefriend 2009-03-16 03:32:37
linq中参数超过10个以后会出现参数调用混乱,大家有好的解决方案吗???????????

如下例所示:
本来 ]([t1].[HCHotelSupplierID] IN (@p11, @p12, @p13)) 中参数 @p11, @p12, @p13 是应该对应
@p1 [DateTime]: 2009-3-16 0:00:00
@p11 [Int32]: 12
@p12 [Int32]: 9
@p13 [Int32]: 0

但现在参数调用乱了,他是分开调用 @p1 1, @p1 2, @p1 3 这样调用所以变成这样了

('2009-3-16 0:00:00'1, '2009-3-16 0:00:00'2, '2009-3-16 0:00:00'3))

不清楚,大家看明白了吗,,,,,,高手在线的帮助下


SELECT [t0].[HCRoomTypeID], [t0].[HCRoomPriceID], [t0].[GuestTypeCode], [t0].[ValidStartDate], [t0].[ValidEndDate], [t0].[CommendLevelCode], [t0].[RoomPriceStatusCode], [t0].[Setting], [t0].[IsDel], [t0].[IsSpecial]
FROM [dbo].[HCRoomPrice] AS [t0]
INNER JOIN [dbo].[HCRoomType] AS [t1] ON [t1].[HCRoomTypeID] = [t0].[HCRoomTypeID]
WHERE ([t1].[HCHotelInfoID] = @p0) AND ((([t0].[ValidStartDate] >= @p1) AND ([t0].[ValidStartDate] <= @p2)) OR (([t0].[ValidEndDate] >= @p3) AND ([t0].[ValidEndDate] <= @p4)) OR (([t0].[ValidStartDate] <= @p5) AND ([t0].[ValidEndDate] >= @p6))) AND (([t0].[ValidStartDate] < @p7) OR (([t0].[ValidStartDate] > @p8) AND ([t0].[ValidEndDate] < @p9)) OR ([t0].[ValidEndDate] > @p10)) AND ([t1].[HCHotelSupplierID] IN (@p11, @p12, @p13))
ORDER BY [t0].[HCRoomPriceID]
-------------------------------
@p0 [Int32]: 10615
@p1 [DateTime]: 2009-3-16 0:00:00
@p2 [DateTime]: 2009-3-17 0:00:00
@p3 [DateTime]: 2009-3-16 0:00:00
@p4 [DateTime]: 2009-3-17 0:00:00
@p5 [DateTime]: 2009-3-16 0:00:00
@p6 [DateTime]: 2009-3-17 0:00:00
@p7 [DateTime]: 2009-3-16 0:00:00
@p8 [DateTime]: 2009-3-17 0:00:00
@p9 [DateTime]: 2009-3-16 0:00:00
@p10 [DateTime]: 2009-3-17 0:00:00
@p11 [Int32]: 12
@p12 [Int32]: 9
@p13 [Int32]: 0



但现在他转换成SQL 并不是这样的,而是

SELECT [t0].[HCRoomTypeID], [t0].[HCRoomPriceID], [t0].[GuestTypeCode], [t0].[ValidStartDate], [t0].[ValidEndDate], [t0].[CommendLevelCode], [t0].[RoomPriceStatusCode], [t0].[Setting], [t0].[IsDel], [t0].[IsSpecial]
FROM [dbo].[HCRoomPrice] AS [t0]
INNER JOIN [dbo].[HCRoomType] AS [t1] ON [t1].[HCRoomTypeID] = [t0].[HCRoomTypeID]
WHERE ([t1].[HCHotelInfoID] = 10615) AND ((([t0].[ValidStartDate] >= '2009-3-16 0:00:00') AND ([t0].[ValidStartDate] <= '2009-3-17 0:00:00')) OR (([t0].[ValidEndDate] >= '2009-3-16 0:00:00') AND ([t0].[ValidEndDate] <= '2009-3-17 0:00:00')) OR (([t0].[ValidStartDate] <= '2009-3-16 0:00:00') AND ([t0].[ValidEndDate] >= '2009-3-17 0:00:00'))) AND (([t0].[ValidStartDate] < '2009-3-16 0:00:00') OR (([t0].[ValidStartDate] > '2009-3-17 0:00:00') AND ([t0].[ValidEndDate] < '2009-3-16 0:00:00')) OR ([t0].[ValidEndDate] > '2009-3-16 0:00:00'0)) AND
([t1].[HCHotelSupplierID] IN ('2009-3-16 0:00:00'1, '2009-3-16 0:00:00'2, '2009-3-16 0:00:00'3))
ORDER BY [t0].[HCRoomPriceID]
...全文
98 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkcq2004 2009-06-13
  • 打赏
  • 举报
回复
linq 不支持 in
E_wait 2009-05-04
  • 打赏
  • 举报
回复
绝对不是参数超过10的问题.
也看不明白lz提的问题,把linq语句贴出来吧
in在linq中用contains来操作的
hztltgg 2009-04-30
  • 打赏
  • 举报
回复
没看到楼主的linq语句,linq语句里in应该用Contains来模拟
wptad 2009-04-30
  • 打赏
  • 举报
回复
我也觉得不是参数问题。
IN 在LINQ中 可以使用么?
createTim 2009-04-28
  • 打赏
  • 举报
回复
应该不是参数问题~
fanshuyi 2009-04-28
  • 打赏
  • 举报
回复
超过10个肯定是没有问题的
SWind 2009-03-16
  • 打赏
  • 举报
回复
问题跟参数多少无关,
linq当中不能这样in
貌似必须把in的内容先弄到一个list当中

8,497

社区成员

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

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