首页 新闻 会员 周边

linq的一个常出现的问题

0
悬赏园豆:20 [已解决问题] 解决于 2009-09-05 08:26

PsProductDataContext db = new PsProductDataContext();

 public List<PsProduct> StaticReport()
        {
            return (from c in db.PsProduct
                   select c.ShCompanyName).ToList();
        }

这段代码系统报 无法将类型“system.collection .generic.list<string>隐士转换为system.collection .generic.list<qdrkProductMvc.Models.PsProduct>,我把代码改为

  public IQueryable<PsProduct> StaticReport()
        {
            return from c in db.PsProduct
                   select c.ShCompanyName;
        }

还是报相同的错,请高手指教;

我用viewdata["ss"]=(... select c.ShCompanyName).ToList().在view中用foreach (List<Object> item in ViewData["ti"] as List<Object>)进行遍历,确报了未将对象运用到实例的错。迷糊。

朱梅梅的主页 朱梅梅 | 初学一级 | 园豆:102
提问于:2009-09-02 15:24
< >
分享
最佳答案
0

return (from c in db.PsProduct
                   select c.ShCompanyName).ToList();

既然是select,返回的自然是被select出来的字段,因此是ShCompanyName,这个字段是string型的,所以return的是List<string>

 

viewdata["ss"]=(... select c.ShCompanyName).ToList()

这句以后,viewdata["ss"]里存的是一个List<string>

List<string>不是List<object>,彼此之间不能转型

List<stirng> list = new List<string>();

List<object> objList = list as List<object>();

以上2句得到的objList是null,所以有未将对象运用到实例的异常

收获园豆:20
Gray Zhang | 专家六级 |园豆:17610 | 2009-09-02 22:43
谢谢你,明白了
朱梅梅 | 园豆:102 (初学一级) | 2009-09-05 08:24
其他回答(4)
0

试下这样 public List<PsProduct> StaticReport()
        {
            return (from c in db.PsProduct
                   select c).ToList();
        }

或public List<string> StaticReport()
        {
            return (from c in db.PsProduct
                   select c.ShCompanyName).ToList();
        }

Henry.huang | 园豆:320 (菜鸟二级) | 2009-09-02 17:04
非常感谢你,写的很详细
支持(0) 反对(0) 朱梅梅 | 园豆:102 (初学一级) | 2009-09-05 08:26
0

return (from c in db.PsProduct  select c.ShCompanyName).ToList();

返回的是 ShCompanyName 的 List 

slokra | 园豆:264 (菜鸟二级) | 2009-09-02 17:28
0

上次不是跟你说过的嘛,你要不就直接返回string类型,要不就再定义一个类型区返回,你要返回select出来的那个东西就是一个匿名类型,是不可以转型到你需要的类型的,明白了吗?

天堂口 | 园豆:514 (小虾三级) | 2009-09-03 08:50
0

我晕死,楼上说的这么明白,而且还说上次跟你说过了你还不懂么?

Vincent Yang | 园豆:573 (小虾三级) | 2009-09-04 20:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册