2012-01-10 24 views
1

linqの文字列連結の式を書く方法は?linqの文字列連結の式を書く方法は?

x => (x.Address1 + " " + x.Address2).Contains("add") 

述語と私はstring.Concatメソッドを使用せずに文字列の連結のためのラムダ式を記述するのか分からない: 私はこれを持っています。だから私は2つの式(x.Address1" ")があり、それらを連結する必要があります。

+2

あなたの質問は完全に明確ではありません。文字列連結はLINQまたはラムダ式と何が関係していますか?なぜあなたはstring.Concat "*(または' + '演算子)を使用せずに*したいのですか? – Groo

+1

何が問題なのですか?なぜあなたはstring.Concatが好きではありませんか? –

+0

述部と一致するオブジェクトのNHibernateを照会しようとしていますか?私はちょうどnhibernateタグのために推測しています。 – Joey

答えて

1

UPDATE:このリンクは解決策を持っていますNHibernate/MySQL string concatenation

れる文字列foo.Contains(foo)には空白が含まれていますか?そうでない場合、連結を避けるようにAdeの2番目の述語を試してください。

これで問題が解決しない場合は、必要以上に多くのオブジェクトをデータベースから取り出し、コード内でフィルタリングする必要があります。これを行う必要がある場合は、戻ってくるオブジェクトの数を制限するために、x => x.Address1.Contains(foo[0]) || x.Address2.Contains(foo[0])のような最初の述語を使用する価値があります。私はあなたにこれより良い最初の述語を思いつくためにそれを残す。

+0

私はそのような述語x => x.Address1.Contains(foo [0])||を使うことはできません。 x =>(x.Address1 + "" + x.Address2 + "" x.City + "、" + x.ZipCode).Contains( "x.Address2"私は==、StartWith、EndWithの代わりにContainsを持つことができます。ですから、式を使って動的にプロパティとconstを連結する能力が必要です。 –

+1

これはおそらく助けになるでしょう:http://stackoverflow.com/questions/6105340/nhibernate-mysql-string-concatenation – Joey

+0

ジョーイ:あなたのご意見は私を大いに助けました。これを答えに書くと、私はそれを受け入れます。 –

2

String.Concatを使用しない理由がわかりません。これは正常に動作します:

var foo = wibble.Select(s => String.Concat("foo", s, "bar")); 

を書くために、それは良いことではないでしょう、戻ってあなたの例に行く x => x.Address1.Contains("add") || x.Address2.Contains("add")

+0

上記のように、NHibernateにオブジェクトを照会しようとすると例外がサポートされないため、string.Concatを使用できません。 –

+0

ああ、あなたの質問は、一般的なLinqではなく、ラムダ式のNHibernateのサポートについてです。これはORMに共通しているので、私は基本的な操作(つまり文字列をまとめて追加する)に固執しています。問題は基本的にORMがString.Concat(foo、bar)をSQLに変換する方法を知らないことですステートメント。 –

関連する問題