首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linqdatasource的where子句中搜索连接字符串?

问如何在linqdatasource的where子句中搜索连接字符串?
EN

Stack Overflow用户
提问于 2012-01-26 01:32:51
回答 1查看 187关注 0票数 0

我希望在我的个人资料类中搜索全名。谁能告诉我我哪里做错了?

我知道: Profile.FullName不支持到SQL的转换。

linq分部类:

代码语言:javascript
复制
partial class Profile
    {
        public static readonly Expression<Func<Profile, string>> expFullName = p => p.FirstName + " " + p.LastName;
        public static readonly Func<Profile, string> funcFullName = expFullName.Compile();

        public string FullName
        {
            get { return funcFullName(this); }
        }
    }

数据源码:

代码语言:javascript
复制
    <asp:LinqDataSource runat="server" ID="someSource" ContextTypeName="MyContext" TableName="Images" 
Where='Approved == true && CategoryID = 2 && (@searchTerm = "" || Profile.FullName.Contains(@searchTerm))'>
        <WhereParameters>
             <asp:ControlParameter Name="searchTerm" ControlID="txtSearch" DefaultValue="" ConvertEmptyStringToNull="false" />
        </WhereParameters>
    </asp:LinqDataSource>    

我想指出的是,下面的解决方案是有效的。但我希望有一个FullName的派生属性,并无条件地使用它。这有可能吗?

代码语言:javascript
复制
(Profile.FirstName + " " + Profile.LastName).Contains(@searchTerm)
EN

回答 1

Stack Overflow用户

发布于 2012-01-26 02:08:41

这是可行的,因为它可以转换为SQL:

代码语言:javascript
复制
(Profile.FirstName + " " + Profile.LastName).Contains(@searchTerm)

这将不起作用,因为FullName没有映射到SQL中的列:

代码语言:javascript
复制
(Profile.FullName).Contains(@searchTerm)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9007262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档