2016-10-20 10 views
0

私のデータベースからデータを取得するComboboxがあります。Comboboxの選択項目からデータベース行を取得

var people = (from x in db.Person select new { Value = x.Id, Names = x.Namn + " " + x.EfterNamn }).ToList(); 
cbpeople.DataSource = people; 
cbpeople.DisplayMember = "Names"; 
cbpeople.ValueMember = "Value"; 
cbpeople.SelectedIndex = -1; 

そして、私はあなたが見ることができるように、私はそれがデータベース内の同じ行からの情報を選択し、ラベルに入れ持つようにしようとしているSelectedIndexを機能に

int id = cbpeople.SelectedIndex + 1; 
string namn = (from x in db.Person where x.Id == id select x.Namn).ToString(); 
lblNamn.Text = namn; 

を持っています。 ( "cbpeople.SelectedIndex + 1;"はSelectedValueからIDを取得する方法が他にないためです)。

しかし、それはプリントアウトし、すべてが(ラベル上)の代わりに名前のこの長いものです

"SELECT \r\n [Extent1].[Namn] AS [Namn]\r\n FROM [dbo].[Person] AS [Extent1]\r\n WHERE [Extent1].[Id] = @p__linq__0" 

私が間違って何をしているのですか?

答えて

2

IQueryableオブジェクトに対してToString()を呼び出しています。もちろん、それはSQL表現を返します。クエリを実行するには、これを行うことができます:

string namn = (from x in db.Person where x.Id == id select x.Namn).Single(); 
関連する問題