2011-04-12 7 views
4

私のデータベースdbは、外部キー 'CdTitle'を持つ 'Artist'の主キーとして、ユーザーがデータベースに追加する情報を別の形式で入力することができます私はコンボボックスを持っています。データベースのアーティスト名、主に 'Artist.Names'の名前を入力したいのですが、LINQを使用してデータベースをトラバースし、クエリの結果をコンボボックスに入れてみましたが、私は思ったように働いていない。ComboBoxアイテムを動的データベースのメンバーに移入するC#

私が持っているコードは次のとおりです、既存のサンプルから

comboBox1.DataValueField = "Id"; 
comboBox1.DataTextField = "Name"; 

comboBox1.DataSource = formByArtist.db.Artists; 
comboBox1.DataBind(); 
+2

何が問題なのですか?コードは正しいようです... – dahlbyk

+0

@dahlbyk:それは間違っています - 何も実行されておらず、ArtistNamesはnullです(私は信じています)...どのようにしても、linqステートメントは '.ToList()'で実行する必要があります。 'First()'; 'FirstOrDefault()'など – IAbstract

+1

クエリは 'foreach'によって直ちに実行されます。 'DataSource'を使いたいなら、' ToList() 'などが必要です。 – dahlbyk

答えて

1

は、名前とIDを持っている、あなたがこれを行うことができます

var ArtistNames = 
    (from name in formByArtist.db.Artists  
    select name.Name) 
    .ToList(); 

comboBox1.DataSource = ArtistNames; 
+0

'.DataBind()'は必要ではないと思います。しかし、+1、これは私が使用する方法であり、私はそれが一番クリーンだと思う。 :) –

+0

-1:それでもlinq文は実行されません。 – IAbstract

+0

@IAbstract:db.ArtistsがObjectSet またはIQueryable であると仮定すると、**完全に**間違っています。私はこの全く同じコードを実行しており、うまく動作します。 –

1

次のように変更します:あなたのアーティストをSuposing

var ArtistNames = 
    from name in formByArtist.db.Artists  
    select name.Name; 

foreach (var element in ArtistNames) 
{ 
    comboBox1.Items.Add(element.ToString());        
} 
関連する問題