1

私は次のようにテーブルを設定しています:

prefix | value
 ABC     1234
 ABC     5678
 DEF     1234

where句で比較するために接頭辞と値が連結されているlinqクエリを作成することは可能ですか? 私はこれを試しましたが、常に空のセットを返します:

selected =
            from i in dc.items
            where i.prefix + i.value == "ABC1234"
            select i;

編集:次のT-SQLは正しい結果をもたらします:

 WHERE LTRIM(RTRIM([prefix])) + LTRIM(RTRIM([value])) = 'ABC1234'

Edit2:以下の回答のほとんどを組み合わせた以下は、まだ機能しません:

where (String.Concat(i.prefix.Trim(), i.value.Trim())) == "ABC1234"

Edit3:だから私はそれを機能させましたが、理由はわかりません。私は答えを受け入れましたが、誰かがそれが機能する理由を投稿したら、私は感謝します:)

これは機能します(n行を返します):

var temp = dc.items.Where(i => i.prefix.Trim() + i.prefix.Trim() == "ABC1234");

これは機能しません (0 行を返します):

var temp =
            from i in dc.items
            where i.prefix.Trim() + i.value.Trim() == "ABC1234"
            select i;
4

4 に答える 4

4

私は英語を話せません。これを試して:

var selected = dc.Where(x => x.prefix + x.value == "ABC1234");
于 2012-04-24T21:49:35.033 に答える
2

それが文字列ではないと仮定するとvalue、次のように連結できます。

var selected = dc.Items.Where(x => string.Concat(x.prefix, x.value) == "ABC1234");

使用する利点string.Concatは、すべての引数が文字列に変換されることです。

于 2012-04-24T21:59:21.233 に答える
0
where (i.prefix + i.value) == "ABC1234"
于 2012-04-24T21:52:06.633 に答える
0

これを選択してみてください

selected =
 from c in db.items

 select new {

 Name = string.Format("{0}{1}", c.prefix , c.value)

};

「ABC1234」がありますか?

于 2012-04-24T21:57:12.877 に答える