我是菜鸟,想用Ibatis.net做个数据库通用操作方法,在其中遇到数据库查询时返回的都是IList<Object>,为了代码简洁,怎样将最终的查询转换成Ilist<实体>,
如以下代码:
IList<object> objects;
IList<menu> ml;
objects = IService.GetAll("SelectAllmenu");
foreach (object o in objects)
{
ml.Add((menu)o);
}
在运行到ml.Add((menu)o)时报错未将对象引用设置到对象的实例,请教这类需求设计是否合理,应该如何实现,类型转换应该怎样实现?谢谢大大们,木有分了只有30分了
如以下代码:
IList<object> objects;
IList<menu> ml;
objects = IService.GetAll("SelectAllmenu");
foreach (object o in objects)
{
ml.Add((menu)o);
}
在运行到ml.Add((menu)o)时报错未将对象引用设置到对象的实例,请教这类需求设计是否合理,应该如何实现,类型转换应该怎样实现?谢谢大大们,木有分了只有30分了
对!需要 using System.Linq;
却没有实例化它啊,至少要IList<menu> ml = new List<menu>()一下
=>
IList<menu> ml = new List<menu>();
{
foreach (TA x in array)
yield return x;
}
这样你想得到任何强类型列表直接调用它就行了。你也许会说“我用的vs不支持yield return啊?”这种问题吧!那么使用vs2010来开发嘛!跟你的.net2.0平台没有关系,在vs下你就可以使用c#的新语法、可以使用yield return。
如果是LINQ,那么用OfType<T>和Cast<T>就好了。
public static IEnumerable<TA> GetTA<TA>(IEnumerable<object> array)
{
return array.OfType<TA>();
}