我希望在我的个人资料类中搜索全名。有人能告诉我我做错了吗?
我得到: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)
答案 0 :(得分:0)
这样可行,因为它可以转换为SQL:
(Profile.FirstName + " " + Profile.LastName).Contains(@searchTerm)
这不起作用,因为FullName不是映射到SQL中的列:
(Profile.FullName).Contains(@searchTerm)