0

私は、Linq を使用して C# と .Net 2.0 に真っ向から取り組みましたが、次のようないくつかの問題をデバッグする際にいくつかの問題が発生しています。

cmbObjectsLinq を使用して取得した一連のオブジェクトを設定したい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()代わりに追加しようとしましたが、 .nullOutOfMemoryException

4

2 に答える 2

1

コンボ ボックス コントロールには、データ バインドされた項目をリスト内のハードコードされた項目に追加するオプションがあります。したがって、n/a 値をハードコードし、実際の値をデータ バインドします。

于 2008-12-17T10:07:19.930 に答える
0

さて、値DataSourceを追加しようとすると無効になるようです。null解決策はforeachList<>.

于 2008-12-17T10:04:05.880 に答える