collections - 是否可以将两个 IQueryable 添加在一起?

标签 collections arraylist generics iqueryable

我一直在 IQueryable<> (具有相同类型)上使用 Union 来尝试从两个集合中生成一个集合,但它不起作用。我相信我对 IQueryable 成员的理解有问题。

我以为我可以使用 union 方法来构建(在 foreach 中)一个 SQL 语句,该语句将执行如下操作:

SELECT * FROM MYTABLE WHERE FK = 1
UNION
SELECT * FROM MYTABLE WHERE FK = 9
UNION
SELECT * FROM MYTABLE WHERE FK = 15

以前我认为必须有一种方法可以在两个 IQueryable 上产生与旧的最喜欢的 ArrayList 的 AddRange 相同的效果,这实际上是我在这里尝试实现的基础。

最佳答案

实际上,这完全按预期工作:

var q1 = from c in db.Customers where c.CustomerID.StartsWith("A") select c;
var q2 = from c in db.Customers where c.CustomerID.StartsWith("B") select c;
var q3 = from c in db.Customers where c.CustomerID.StartsWith("C") select c;

var q4 = q1.Union(q2).Union(q3);

(我正在使用 Northwind 数据库)。它生成一个 SQL 语句,该语句将三个查询结合起来。

更新:我想我误解了你所说的“循环中”的意思。这工作正常:)
static void Main(string[] args)
{
    var db = new NorthwindDataContext();
    IQueryable<Customer> query = from c in db.Customers 
                                 where c.CustomerID.StartsWith("A") 
                                 select c;

    foreach (var ch in "EIOV")
    {
        var chh = ch.ToString();  // separate variable so closure work right

        query = query.Union(from c in db.Customers 
                            where c.CustomerID.StartsWith(chh) 
                            select c);
    }

    foreach (var c in query)
    {
        Console.WriteLine(c.CompanyName);
    }
}

关于collections - 是否可以将两个 IQueryable 添加在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492412/

相关文章:

C# LINQ "inner join"集合

java - 如何使用 Comparable 接口(interface)比较 ArrayList 中对象的多个属性?

java - throws x extends Exception 方法签名

Haskell,将泛型与 Char 进行比较

spring - spring中null自动转为空列表

java - 检查一个数组是否包含在另一个数组中的标准 API 方法

java - containsKey 与网址不匹配

java - 将抽象类存储在数组列表中

android - 在 RecyclerView 中单击项目后,不确定在哪里实现 parcelable ArrayList

javascript - 获取并循环遍历 AngularJS 中的未知对象