私は、Linq を使用して C# と .Net 2.0 に真っ向から取り組みましたが、次のようないくつかの問題をデバッグする際にいくつかの問題が発生しています。
cmbObjects
Linq を使用して取得した一連のオブジェクトを設定したいComboBox コントロール ( ) があります。List<T>
ジェネリックを設定するヘルパー メソッドを作成しました。
class ObjectProvider
{
public static List<T> Get<T>(bool includeNull) where T : class, new()
{
List<T> list = new List<T>();
LutkeDataClassesDataContext db = ConnectionManager.GetConnection();
IQueryable<T> objects = db.GetTable<T>().AsQueryable();
if (includeNull) list.Add(null);
foreach (T o in objects) list.Add(o);
return list;
}
public static List<T> Get<T>() where T : class, new()
{
return Get<T>(false);
}
}
関数を true または false で呼び出したときの結果を確認しました。 にList
は正しい値が含まれています。 を渡すと、最初の値としてtrue
含まnull
れ、その後に他のオブジェクトが続きます。
DataSource
ただし、をに割り当てるComboBox
と、コントロールは値を含む項目の表示を単に拒否しnull
ます (選択できません)。
cmbObjects.DataSource = ObjectProvider.Get<Car>(true);
渡すfalse
(またはパラメーターを指定しない) と機能します。すべてのオブジェクトが表示されます。
マジック ナンバー オブジェクトに頼らずに最初のオブジェクトに「null」値を指定する方法はありますか (N/A 値を指定するためだけに DB に偽のエントリを作成するなど)。nullable のラインに沿った何かが理想的ですが、私はちょっと迷っています。
また、リストに追加するnew T()
代わりに追加しようとしましたが、 .null
OutOfMemoryException