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

时间:2009-05-17 22:44:42

标签: c# asp.net linq linq-to-sql entity-framework

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

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

正如您在下面定义的函数中所见。

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

问题是它给我施法错误。你可以看到我想要实现的是基于我的参数,它给我一个结果集。一段时间的产品和一些产品一段时间单品。我是linq的新手,所以任何帮助都会受到赞赏。

错误 无法将类型为'System.Data.Objects.ObjectQuery`1 [TTDCore.Theatres]'的对象转换为'TTDCore.Theatres' < / p>

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

Products p = Class1.GetProducts(0);

GridView1.DataSource = p;
GridView1.DataBind();

2 个答案:

答案 0 :(得分: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;
}

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

答案 1 :(得分:0)

我喜欢明确Linq查询和lambdas。我建议将您的功能定义为List&lt; Product&gt; (或IEnumerable&lt; Product&gt;),然后将.ToList()添加到where语句中。我假设Products类型是某种集合?