问一linq调用存储过程 sql语句拼接问题
string stprice = "i.金额>0 and i.金额<500";//金额,价格预算Ritem.DataSource = dw.selectItembyevry(stprice);//linq调用存储过程
Ritem.DataBind();
存储过程:
ALTER PROCEDURE [dbo].[selectItembyevry]
@price nvarchar(500)
AS
--declare @stsql nvarchar(4000)
BEGIN
declare @stsql nvarchar(4000)
--declare @price2 nvarchar(500)
--set @price2='i.金额>0 and i.金额<500'
set @stsql='select i.[Id] ,i.[项目分类] ,i.[项目名称] ,i.[地区] ,i.[行业]
,i.[金额] ,i.[方式] ,i.[回报] ,i.[期限] ,i.[详细内容] ,i.[资产性质]
,i.[资产状态] ,i.[资产评估] ,i.[用户提交时间] ,i.[入本地库时间]
,i.[客服修改时间] ,i.[是否已入本地库] ,i.[UserId] ,i.[是否已生成静态页并推送]
,ica.CaName,fm.方式名称,indu.行业名称
,c.城市名 from Items I, ItemCa ica, City c, FinancingMode fm, Industry indu where
i.项目分类=ica.CaId and i.地区=c.城市Id and i.方式=fm.方式Id and indu.行业Id=i.行业 and i.是否自营项目=0 and '
--i.金额>0 and i.金额<500
--print @stsql
set @stsql=@stsql+@price
exec(@stsql)
END
运行提示:Ritem 使用的是无效数据源。有效数据源必须实现 IListSource 或 IEnumerable。求帮助 --------------------编程问答-------------------- 你单独执行存储过程,能够查询出数据源吗?
其实你的 参数传入条件表达式,还不如传入两个参数值,如果改为两个参数就不容易出错 --------------------编程问答-------------------- BEGIN
declare @stsql nvarchar(4000)
declare @price2 nvarchar(500)
set @price2='i.金额>0 and i.金额<500'
set @stsql='select i.[Id] ,i.[项目分类] ,i.[项目名称] ,i.[地区] ,i.[行业]
,i.[金额] ,i.[方式] ,i.[回报] ,i.[期限] ,i.[详细内容] ,i.[资产性质]
,i.[资产状态] ,i.[资产评估] ,i.[用户提交时间] ,i.[入本地库时间]
,i.[客服修改时间] ,i.[是否已入本地库] ,i.[UserId] ,i.[是否已生成静态页并推送]
,ica.CaName,fm.方式名称,indu.行业名称
,c.城市名 from Items I, ItemCa ica, City c, FinancingMode fm, Industry indu where
i.项目分类=ica.CaId and i.地区=c.城市Id and i.方式=fm.方式Id and indu.行业Id=i.行业 and i.是否自营项目=0 and '
--i.金额>0 and i.金额<500
--print @stsql
set @stsql=@stsql+@price2
exec(@stsql)
END
如果改成以上语句,是可以直接查出数据的。运行没有问题。我传两个参数是为了动态传条件参数啊
补充:.NET技术 , LINQ