LinqtoSql使用.first()和asp.net gridview

时间:2011-11-29 22:47:40

标签: asp.net linq-to-sql

我正在使用具有以下linq查询的实体框架

 IQueryable<Order_Details> query = (from ord in ctx1.Order_Details
                             where ord.OrderID == 1
                             select ord).ToArray();

   gv1.DataSource = query;
   gv1.DataBind();

我得到一个结果ok,返回orderId为1的行 当我使用以下内容时,

var query = (from ord in ctx1.Order_Details
             where ord.OrderID == 1
            select ord).First() as IQueryable<Order_Details>;

gv1.DataSource = query;
gv1.DataBind();

我没有在gridview中找到任何结果

2 个答案:

答案 0 :(得分:1)

First()返回Order_Detail记录本身,而不是集合/数组,因此不是IQueryable;所以使用as IQueryable<Order_Details>将返回null,因为它无法强制转换。投射到IQueryable&lt;&gt;只能用于某种类型的可枚举。

如果必须使用First,请绑定到gridview,如下所示:

var query = (from ord in ctx1.Order_Details
             where ord.OrderID == 1
            select ord).First();

gv1.DataSource = new[] { query };
gv1.DataBind();

答案 1 :(得分:0)

您正在尝试将单个Order_Details对象投射到IQueryable<Order_Details>

由于这不是有效演员,因此会返回null,并且您的网格未显示任何结果。

您的GridView期待IEnumerable,因此您的原始代码是正确的。你为什么试着改变它?