0
我正在寻找我的个人档案中的全名。有人能告诉我我做错了什么吗?如何在linqdatasource的where子句中搜索concatinated字符串?
我得到:Profile.FullName没有支持的对SQL的转换。
LINQ部分类:
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)
我明白,但我想要做的是在linq类本身上有一个表达式,它知道在查询中使用“FullName”到“FirstName +”“+ LastName”。不知道它是否可能如此想我会问:) – Mike