如何在LINQ函数中定义返回类型?

And*_*ndy 1 c# linq asp.net entity-framework linq-to-sql

我想知道如何在以下情况下定义函数中的返回类型.

我有一个产品,我一次返回所有信息或一个产品.

正如您在下面定义的函数中看到的那样.

public static Products GetProducts(int pid) 
{
    var pro = from p in context.Products
              select p;

    if(pid > 0)
        pro =  pro.where(p => p.ProductID ==pid)

    return (Products)p;
}
Run Code Online (Sandbox Code Playgroud)

问题是它给我铸造错误.你可以看到我想要实现的是基于我的参数,它给我一个结果集.一段时间的产品和一些时间单品.我很新的linq所以任何帮助将不胜感激.

错误是无法将类型为'System.Data.Objects.ObjectQuery`1 [TTDCore.Theatres]'的对象强制转换为'TTDCore.Theatres'

当我将它绑定到gridview时.这是一个代码

Products p = Class1.GetProducts(0);

GridView1.DataSource = p;
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)

Nol*_*rin 6

您想要返回IEnumerable<Product>,它表示类型的可迭代(或可枚举)对象Product.LINQ通常都是基于这种泛型类型,所以它通常是您想要作为查询返回的结果.

我相信你的代码应该修复成这样的东西:

public static IEnumerable<Products> GetProducts(int pid) 
{
    var pro = from p in context.Products
              select p;

    if(pid > 0)
        pro =  pro.Where(p => p.ProductID == pid)

    return pro;
}
Run Code Online (Sandbox Code Playgroud)

如果您在问题中提出其他问题,请告诉我.我不确定你究竟在寻找什么.