2016-10-20 114 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(); 
相關問題