0

我想使用实体框架从 wpf 中的组合框中显示所选项目的详细信息。但是我下面的代码只显示数据库中的第一个条目,无论选择什么项目。

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        using (Entities c = new Entities())
        {
            string sFirst = c.UserProfiles.FirstOrDefault().First.ToString();
            string sLast = c.UserProfiles.FirstOrDefault().Last.ToString();

            txtFirst.Text = sFirst;
            txtSecond.Text = sLast;
         }
    }
4

2 回答 2

0

您没有从数据库中过滤数据...没有where指定所选项目的子句。我不知道你的数据结构,但尝试这样的事情:

using (Entities c = new Entities())
{
    string sFirst = c.UserProfiles.Where(u => u.Id == selectedItemId).First().First.ToString();
    string sLast = c.UserProfiles.Where(u => u.Id == selectedItemId).First().Last.ToString();

    txtFirst.Text = sFirst;
    txtSecond.Text = sLast;
}

此外,FirstOrDefault()如果您不打算检查结果是否是,那么使用是没有意义的null

于 2013-10-31T15:13:44.587 回答
0

我认为你在混杂东西。

我相信您真正想要的是组合框中的项目。试试这个代码:

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var comboBox = sender as ComboBox;
        if (comboBox != null)
        {
            var item = comboBox.SelectedItem as EntityType;
            //EntityType == the table you are loading into combobox (I guess it supposed to be UserProfile)
            if (item != null)
            {
                txtFirst.Text = item.First.ToString();
                txtSecond.Text = item.Last.ToString();
            }
        }
    }
于 2013-10-31T15:31:00.100 回答