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

时间:2012-01-25 17:32:51

标签: c# asp.net linq-to-sql

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

我得到:Profile.FullName没有支持的SQL转换。

linq partial class:

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); }
        }
    }

数据源代码:

    <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创建一个派生属性并无条件地使用它。这甚至可能吗?

(Profile.FirstName + " " + Profile.LastName).Contains(@searchTerm)

1 个答案:

答案 0 :(得分:0)

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

(Profile.FirstName + " " + Profile.LastName).Contains(@searchTerm)

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

(Profile.FullName).Contains(@searchTerm)
相关问题