如何从实体模型中获取列数据?

时间:2011-08-24 20:06:56

标签: c# sql entity-framework-4

我正在尝试获取一列数据并将其填充到组合框中但无法使其工作。有人可以帮我解决这个问题吗?

代码:

test_DataEntities db = new test_DataEntities();
DataGrid test = new DataGrid();
test.ItemsSource = db.testTbls;
cmbWorkOrder.ItemsSource = test.Columns[2];

1 个答案:

答案 0 :(得分:1)

您可以尝试:

cmbWorkOrder.ItemsSource = (test.ItemsSource as IEnumerable<testTblEntity>)
    .Select(t => t.PropertyToDisplayInComboBox);

它返回IEnumerable<T>,其中T是要在组合框中显示的属性的类型(例如string)。我希望绑定到test.ItemsSource将执行查询以将实体从DB提取到内存中,然后绑定到cmbWorkOrder.ItemsSource仅从内存中的集合中读取其数据并且不会数据库再次。当然,我不是。

修改

也许这有点清洁:

test_DataEntities db = new test_DataEntities();
DataGrid test = new DataGrid();
List<testTblEntity> list = db.testTbls.ToList(); // executes the query
test.ItemsSource = list;
cmbWorkOrder.ItemsSource = list.Select(t => t.PropertyToDisplayInComboBox);

当查询实际执行时,您现在可以控制。在第一个示例中,它将依赖于绑定引擎何时将绑定网格以及何时组合框可能取决于XAML中控件的顺序(假设它是WPF)。