LinqtoSql, используя .first () с gridView asp.net - PullRequest
0 голосов
/ 30 ноября 2011

Я использую Entity Framework со следующим запросом linq

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

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

Я получаю результат нормально, возвращаю строку с 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();

Я не получаю никаких результатов в сетке

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

First () возвращает саму запись Order_Detail, а не коллекцию / массив, и поэтому не является IQueryable;поэтому использование as IQueryable<Order_Details> вернет ноль, потому что он не может быть приведен.Приведение к IQueryable <> может работать только для некоторого перечислимого типа.

Если вам нужно использовать First, привязайте к gridview так:

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

gv1.DataSource = new[] { query };
gv1.DataBind();
0 голосов
/ 30 ноября 2011

Вы пытаетесь привести единственный объект Order_Details к IQueryable<Order_Details>

Так как это неверное приведение, возвращается null, и ваша сетка не показывает никаких результатов.

Ваш GridView ожидает IEnumerable, поэтому ваш исходный код был верным.Почему вы пытались это изменить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...