Asp.net ';)';LINQDATASURCE where子句上需要or运算符

Asp.net ';)';LINQDATASURCE where子句上需要or运算符,asp.net,where,linqdatasource,Asp.net,Where,Linqdatasource,Where=“((ProgModelID==@ProgModelID)| |(@ProgModelID==@ShowAll))&(((FirstName++'+MiddleName++'+LastName)像''%+@Name+'%'))|((FirstName++'+LastName)像''+@Name+'%'))” 在与文本框进行比较时,我需要将全名连接在一起,以便筛选GridView,但在尝试运行它时会出现此错误。当我在每个FirstName、MiddleName和LastName周围放置

Where=“((ProgModelID==@ProgModelID)| |(@ProgModelID==@ShowAll))&(((FirstName++'+MiddleName++'+LastName)像''%+@Name+'%'))|((FirstName++'+LastName)像''+@Name+'%'))”

在与
文本框
进行比较时,我需要将全名连接在一起,以便筛选
GridView
,但在尝试运行它时会出现此错误。当我在每个
FirstName
MiddleName
LastName
周围放置
[]
时,错误变为
表达式expected

更新
我有一个文本框,用户可以在其中键入名称以过滤
GridView
的结果。
GridView
有一个
LinqDataSource
。问题是数据库中的名称被分为3部分:第一部分、中间部分和最后一部分。我想能够过滤的名字+姓氏,以及第一+中间+姓氏。与ProgModel相关的区域用于
下拉列表
,如果与
@Name
相关的部分被删除,则该区域已开始工作。

您只需再添加一个
结束。这将在您的
&

试试这个:

Where="((ProgModelID == @ProgModelID) || (@ProgModelID == @ShowAll)) && 
(((FirstName + ' ' + MiddleName + ' ' + LastName) LIKE '%' + @Name + '%') 
|| ((FirstName + ' ' + LastName) LIKE '%' + @Name + '%')))"
或者-为了使其更易于阅读并仍能获得相同的结果,请删除
FirstName+''
之前)中的一个,如:

Where="((ProgModelID == @ProgModelID) || (@ProgModelID == @ShowAll)) && 
((FirstName + ' ' + MiddleName + ' ' + LastName) LIKE '%' + @Name + '%') 
|| ((FirstName + ' ' + LastName) LIKE '%' + @Name + '%'))"

最后,错误消息说明了一切:)

我找到了避免此错误的方法,以及可能的原因。我将计算列添加到LinqDataSource从中提取全名(first、middle、last)和名称(first、last)行的视图中


然后我将
更改为
.Contains()
,并收到
类型“string”中不存在适用的方法“Contains”
错误。发生的事情是,我忘记将
ConvertEmptyStringToNull=“false”
添加到文本框的
ControlParameter
(我从链接中找到了此解决方案)。这解决了所有问题。

我仍然收到相同的错误。但是谢谢你注意到额外的括号。我不允许在像
这样的
之前连接字符串吗?它看起来非常复杂-你试图实现你的目标的方式-也许用你实际试图做的事情更新你的问题,可能是更好的处理方法。。