2016-08-15 7 views
0

に私は次のコードで私のデータベースにProjectTypesへのComboBoxのDataSourceを設定するつもりです:中括弧は、コンボボックス

private void GetAllProjectTypes() 
{ 
    var query = db.ProjectTypes.Select(pt => new { pt.Id, pt.Title }); 
    cmbProjectTypes.DisplayMember = "Title"; 
    cmbProjectTypes.ValueMember = "Id"; 
    cmbProjectTypes.DataSource = query; 
} 

問題は、コンボボックスを結合した後、2つのブレースは、コンボボックスに来るということです。どうすればこの問題を解決できますか?

enter image description here

あなたは上の画像に括弧を見ることができます。

+2

これは奇妙に見えます!あなたは '.Select(pt => new {Id = pt.Id、Title = pt.Title})を試しましたか?ToList();' – user3185569

+0

@ user3185569、私はあなたの言ったことはしましたが、うまくいきませんでした。結果は私の質問のイメージのようです。 – Mohsen

+1

コードがうまく動いています。データソースを 'query.ToList()'に追加することを試みてください。 – poke

答えて

1

フィールドは名前を付ける必要があります:あなたは(ToStringメソッドの結果を見ている)

var query = db.ProjectTypes.Select(pt => new { Id= pt.Id, Title= pt.Title }); 
+0

私はあなたが言ったことをしましたが、うまくいかなかったのです。結果は私の質問のイメージが好きです。 – Mohsen

+1

不思議そうです...あなたはそれを再コンパイルしてもよろしいですか?それは私のマシンで期待されることを正確に行います。 – FloatingKiwi

+2

匿名型は自動的にプロパティ名として 'Id'と' Title'を使用します。明示的に名前を付ける必要はありません。 – poke

0

そして、このビットを試してみてください。

new { pt.Id, pt.Title } 

は、実行時に匿名型を作成します。したがって、サンプルに表示されているようにJSONと違ってシリアル化されています。 多分このようなクエリを作成しよう:

var query = db.ProjectTypes.Select(pt => string.Format("{0} - {1}", pt.Id, pt.Title)); 
+2

これは当てはまりません。匿名型のデフォルトの '.ToString()'はすべてのプロパティと値を中括弧で示していますが、Display Memberにプロパティを指定するとうまく動作します。やってみなよ。 – user3185569

+0

私はComboBoxにIdを表示したくありません。あなたは質問からわかるように、私はタイトルのみを表示し、ValueMemberとしてIDを設定する必要があります! – Mohsen

+0

あなたはこの目的のためにクラスを作成するべきでしょうか? – MichaelThePotato