【问题标题】:IQueryable member methods not behaving?IQueryable 成员方法不起作用?
【发布时间】:2010-08-16 13:49:05
【问题描述】:

这是我的代码:

    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 始终为空。

为什么会这样?我应该怎么做才能获得我正在寻找的汽车列表?

【问题讨论】:

    标签: union iqueryable


    【解决方案1】:

    与所有 LINQ 方法一样,Union 方法返回一个包含联合结果的新 IQueryable&lt;T&gt;
    它不会修改原始实例。

    因此,当您编写 list.Union(a.ToList()) 时,您正在创建一个新的 IQueryable&lt;Car&gt;,其中包含所有汽车,但不对其进行任何操作。
    列表变量不会改变。

    您需要将新序列分配给list 变量,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2013-10-26
      • 2023-03-16
      • 2015-01-15
      • 1970-01-01
      相关资源
      最近更新 更多