我想知道如何在函数中定义一个返回类型 以下情况。
我有一个产品,我一次返回所有信息或一个产品。
正如您在下面定义的函数中所见。
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();
答案 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类型是某种集合?