2012-01-25 10 views
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) 

答えて

0

それはSQLに変換することができますので、これは動作します:フルネームはSQLの列にマッピングされていないため

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

これは動作しません。

(Profile.FullName).Contains(@searchTerm) 
+0

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

関連する問題