Linq Casting返回类型为复杂类型

时间:2013-01-25 12:06:43

标签: c# linq entity-framework

我正在使用Linq从数据库和实体框架中选择项目来创建我的实体。实体框架还使用导入功能向导创建了复杂类型。每当我使用任何复杂类型返回查询时,当我尝试将结果转换为复合返回类型时,我得到一个空值。

private AWorksLTEntities db = new AWorksLTEntities();

public IQueryable<SelectAll_Result> SelectAllMethod()
{
    var result = from p in db.Products
                 select p;
    return result as IQueryable<SelectAll_Result>;
}

SelectAll_Result是由EntityFrameworks创建的复杂类型,并且强制转换不起作用,我的方法返回null。

使用普通实体的相同代码会返回值

private AWorksLTEntities db = new AWorksLTEntities();
public Product SelectAllMethod()
{
    var result = from p in db.Products
                 select p;
    return result;
}

我的问题是虽然这个例子很简单,但是我正在使用我正在处理的代码生成器创建这个查询,并且返回类型很难确定,所以我需要能够使用复杂的返回类型由实体框架函数导入而不是标准实体返回。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

强制转换操作符不知道如何从一个类转换为另一个不相关的类。您必须自己提供转换:

public IQueryable<SelectAll_Result> SelectAllMethod()
{
    var result = from p in db.Products
                 select new SelectAll_Result() { a = p.a, b = p.b, ... };
    return result;
}