IQueryable методы-члены не ведут себя? - PullRequest
0 голосов
/ 16 августа 2010

Это мой код:

    IQueryable<Car> list = new List<Car>().AsQueryable<Car>();

    foreach (TreeNode node in DataHierarchyTree.CheckedNodes)
    {
        var a = from c in ContextDB.Cars
                where c.CarID == Int32.Parse(node.Value)
                select c;

        list.Union(a.ToList());
    }

    CarGridView.DataSource = list;
    CarGridView.DataBind();

Это ничего не делает.Я пробежал его через точки остановки, и он повторяется 5 раз.Если я проверяю значение a, то генерируется инструкция SELECT, которая выдает множество строк в наборе результатов при использовании со значениями в списке проверенных узлов.

Проблема заключается в том, что независимо от того, сколько результатовВыдается, когда я выполняю пошаговый код, list всегда пусто.

Почему это так и что мне нужно сделать, чтобы получить список автомобилей, которые я ищу?

1 Ответ

1 голос
/ 16 августа 2010

Как и все методы LINQ, метод Union возвращает новый IQueryable<T>, содержащий результаты объединения.
Он не изменяет исходный экземпляр.

Поэтому, когда вы пишете list.Union(a.ToList()), вы создаете новый IQueryable<Car>, содержащий все автомобили, но ничего с ним не делаете.
Переменная списка не меняется.

Вам необходимо назначить новую последовательность для list переменная, как это:

list = list.Union(a.ToList());
...