テーブル アダプターを使用して SQL Server から取得した情報を含む型指定された 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 Result で同じことを行うにはどうすればよいですか。
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: ところで、型指定されたデータ テーブルを ComboBox にバインドしていたときは、スキーマで生成された名前を使用して値を次DisplayMember
のValueMember
ように割り当てていました。
myComboBox.DisplayMember = myDataTable.myCol1Column.ColumnName;
myComboBox.ValueMember = myDataTable.myCol2Column.ColumnName;
からこの情報を抽出するにはどうすればよいmyQuery
ですか?