我正在使用具有以下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中找到任何结果
答案 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
,因此您的原始代码是正确的。你为什么试着改变它?