我已经使用LINQ抛出自己头扎到C#和.NET 2.0,和我有调试的一些问题,也就是以下几个问题:数据源,使组合框失败
我有一个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);
}
}
调用带有真或假的函数,当我验证了结果 - 在List
确实包含正确的价值观,传递true
时,它包含null
作为第一个值,其次是其他对象。
当我分配DataSource
至然而ComboBox
,控制简单地拒绝显示任何项目,包括null
值(未选择):
cmbObjects.DataSource = ObjectProvider.Get<Car>(true);
传递false
(或没有参数)不工作 - 它显示所有的对象。
有没有办法让我为第一个对象指定一个“null”值而不诉诸幻数对象(就像在DB中有一个伪造的条目来指定一个N/A值)?可以为空的东西是理想的,但我有点失落。
此外,我已经尝试将new T()
而不是null
添加到列表中,但只导致OutOfMemoryException
。
此外,我试过将`List`声明为`List>`,但编译器不允许我这样做。 –
2008-12-16 09:49:16
将一个Null值添加到列表中的意图是什么?这个列表的Combobox应该显示为单个项目的元素? – Gishu 2008-12-16 09:56:54