从本地数据库检索值时出错

时间:2012-11-11 21:47:26

标签: c# database silverlight windows-phone-7

在此功能中:

public IList<foods> GetFoods()
{
    IList<foods> myFoods = null;

    using (var db = new FoodsContext(ConnectionString))
    {
        var query = from e in db.MyFoods
                    select e;

        myFoods = query.ToList();

        return myFoods;
    }
}

我收到错误:

myFoods = query.ToList();

错误说:

  

InvalidCastException未处理

但我可以得到某列的值,即:当我写:

var query = from e in db.MyFoods
    select e.calorie;

我正确地得到了卡路里柱。那么问题出在哪里呢?感谢。

2 个答案:

答案 0 :(得分:0)

根据您的代码,我相信您的linq查询的结果不能直接转换为食品类对象集合。请尝试以下代码

public IList<foods> GetFoods()
    {
        IList<foods> myFoods = null;

        using (var db = new FoodsContext(ConnectionString))
        {
            var query = from e in db.MyFoods
                        select new foods
                        {
                            calorie = e.calorie,

                            // Map other properties of foods object here

                        };

            myFoods = query.ToList();

            return myFoods;
        }
    }

如果您收到有关详细信息的错误,请告诉我

答案 1 :(得分:0)

我猜您使用的是Linq2SQL,db.MyFoods表示您的表名为MyFood。因此,当您尝试query.ToList();时,它会返回List<MyFood>,并且您尝试将List<MyFood>转换为IList<foods>,这会导致InvalidCastException

试试这个,

public IList<foods> GetFoods()
{
    using (var db = new FoodsContext(ConnectionString))
    {
        return db.Employees.Select(e => new foods 
                                         { 
                                           calorie = e.calorie,

                                           // Map other properties of foods object here
                                         }).ToList<foods>();
    }
}