当我有一个带有从带有表适配器的 SQL Server 检索到的信息的 Typed DataTable 时,我能够将临时数据插入到我只想在执行时使用的 DataTable 中,并且我不希望它被插入数据库。
首先假设例如我有一个这样的数据库表:
CREATE TABLE MyData
(
MyCol1 int,
MyCol2 nchar(10)
)
所以使用 SqlClient 对象这就是我所做的。
MyTypedDataSet.MyTypedDataTable myDataTable =
new MyTypedDataSet.MyTypedDataTable();
myDataAdapter.Fill(myDataTable);
myDataTable.NewMyTypedRow(value1, value2);
然后我可以将它绑定到一个控件,例如一个 ComboBox
myComboBox.DataSource = myDataTable;
myComboBox.DisplayMember = "myCol2";
myComboBox.ValueMember = "myCol1";
如何对 LINQ to SQL 结果执行相同操作,例如:
var myQuery = from data in myContext.MyDatas
select myCol1, myCol2;
myComboBox.DataSource = myQuery;
看,我想在 中添加额外的行myQuery
,以便我可以将此数据绑定到我的组合框,但我不想在我的数据库中添加额外的行。
我通过调用该ToList()
方法来解决它,然后添加我想要的数据,然后将此列表绑定到我的 ComboBox,如下所示:
var myList = myQuery.ToList();
myList.Insert(0, new MyData() { myCol1 = value1, myCol2 = value2 });
myComboBox.DataSource = myList;
...但是我怎样才能直接插入myQuery
呢?这是一个好习惯吗?或者我的解决方法是正确的做法?
PS:顺便说一句,当我将类型化数据表绑定到 ComboBoxes 时,我会使用模式生成的名称来分配值DisplayMember
,ValueMember
如下所示:
myComboBox.DisplayMember = myDataTable.myCol1Column.ColumnName;
myComboBox.ValueMember = myDataTable.myCol2Column.ColumnName;
如何从中提取此信息myQuery
?