1

在这个函数中:

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;

我正确地得到卡路里列。那么问题可能出在哪里?谢谢。

4

2 回答 2

0

我猜你正在使用 Linq2SQL 并且db.MyFoods意味着你的表名是MyFood. 因此,当您尝试query.ToList();它时,它将返回您List<MyFood>并且您尝试转换List<MyFood>IList<foods>which 导致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>();
    }
}
于 2012-11-12T02:59:33.053 回答
0

根据您的代码,我相信您的 l​​inq 查询的结果不能直接转换为食品类对象集合。试试下面的代码

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;
        }
    }

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

于 2012-11-12T01:57:22.313 回答