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)
私はそれを理解するが、私がしたいことは、クエリで使用されているときに 'FullName'を 'FirstName + "" + LastName "に変換することを知っているlinqクラス自体の式を持つことです。その可能性があるので私が尋ねると思ったかどうかわからない:) – Mike