2016-11-11 4 views
1

は、私はこのように、LINQ select文の内側に2つの列に参加する必要があります。を連結文字列は「新しいオブジェクトを選択し、{

var result = (from i in db.MyTable 
       blah blah ... 
       select new MyObject 
       { 
        Id = i.MyTableId, 
        ReportedByName = ub.FirstName + ' ' + ub.LastName 
       }).First(); 

私はそれがかもしれないと思ったようで、ub.FirstName + ' ' + ub.LastNameでエラーが発生します。どのように私はこの構文を働かせますか?

ありがとうございます!

+4

そしてエラーが何ですか? – David

+0

何string.concat' 'について?' ReportedByName = string.Concat(ub.FirstName、 ""、ub.LastName) '' –

+0

String.Join( ""、ub.FirstName、ub.LastName) ' –

答えて

3

現在、文字列を連結するために、char値の文字列を連結しています。文字列+は、別のstringであり、charではありません。代わりに" "を使用します。もちろん、他の方法の

ReportedByName = ub.FirstName + " " + ub.LastName 

を方法は:

  1. string.FormatまたはC#6.0何である文字列 補間

    ReportedByName = string.Format("{0} {1}", ub.FirstName, ub.LastName) 
    ReportedByName = $"{ub.FirstName} {ub.LastName}" //syntactic sugar of option above 
    
  2. string.join(のそれのためのシンタックスシュガーもっと値があれば私は行くでしょう)

    ReportedByName = string.Join(" ", ub.FirstName, ub.LastName) 
    
  3. string.Concat

    ReportedByName = string.Concat(ub.FirstName, " ", ub.LastName) 
    

あなたはエンティティへのLINQであるとするので、あなたがしている場合は、メモリ内のオブジェクトは、string.Join(したがって、文字列の補間)とstring.Formatが動作しない可能性がありますいませんSQLクエリに変換されるlinq。あなたはこれらのオプションを使用したい場合は最初のToList()/AsEnumerable()を使用して(メモリにアイテムを取得し、文字列を連結するためにそれらを使用Jonのanswer

+0

wow。

+0

これは本当に問題を解決しました。 –

+0

@GiladGreenコンソールアプリでチェックしたところ、文字列c = a + '' + b;しかし、おそらくそれは本当に問題を解決する場合、linqにはありません。 – mybirthname

2

を参照してくださいあなたがC#6を使用している場合、あなたはそれを行うことができます。

= $"{ub.FirstName} {ub.LastName}" 

私は、文字列の補間が読みするのが最も簡単だと思います。

+0

これは' + 'を実行するよりもクリーナーに同意します – rbm

+0

このオプションは機能しません - http://stackoverflow.com/questions/35158332/can-i-use-c-sharp-string-interpolation-linq-to-SQL –

+0

あなたはいくつか特別なトリックをすればそれはそうだ:) –

関連する問題