Я с головой ушел в C # и .Net 2.0 с помощью Linq, и у меня возникли некоторые проблемы при отладке некоторых проблем, а именно:
У меня есть элемент управления ComboBox (cmbObjects
). Я хочу заполнить набор объектов, полученных с помощью Linq. Я написал вспомогательный метод для заполнения универсального 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
(или без параметра) работает - она отображает все объекты.
Есть ли способ указать для меня нулевое значение для первого объекта, не прибегая к объектам с магическими числами (например, наличие фиктивной записи в БД только для обозначения значения N / A)? Что-то вроде обнуляемого было бы идеально, но я как бы потерялся.
Кроме того, я попытался добавить new T()
вместо null
в список, но это привело только к OutOfMemoryException
.