从Combobox中的选定项目获取数据库行

时间:2016-10-20 07:16:30

标签: c# winforms linq 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"

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您通过IQueryable对象调用ToString()。当然,它将返回它的SQL表示。要执行查询,您可以执行以下操作:

string namn = (from x in db.Person where x.Id == id select x.Namn).Single();