LINQ 查询语法中是否可以使用联合?

Sam*_*l J 7 c# linq

我注意到我无法union使用ANSI 语法构造带有两个选择之一的 linq 查询。

.net 文档中有一篇关于未显示联合的查询语法示例的文章。但是,在方法语法的 .net 示例下,给出了联合示例。

我知道我可以结合查询语法选择和基于方法的选择来绕过这个问题,但我很好奇我是否可以完全不用基于方法的语法。

var strings =
          from MemberInfo member in Whitelist.Members
          select member.ToString()
          union
          from Type type in Whitelist.Types
          select type.ToString();
Run Code Online (Sandbox Code Playgroud)

AAA*_*ddd 6

答案是不。正如您在查询语法中所能做的那样,它缺少一些基本操作(如您所见)。您将不得不使用扩展方法。

给定的

查询关键字(C# 参考)


Enumerable.Union 方法 (IEnumerable,?IEnumerable)

使用默认的相等比较器生成两个序列的集合并集。

例子

ProductA[] store1 = { new ProductA { Name = "apple", Code = 9 }, 
                       new ProductA { Name = "orange", Code = 4 } };

ProductA[] store2 = { new ProductA { Name = "apple", Code = 9 }, 
                       new ProductA { Name = "lemon", Code = 12 } };

var union = store1.Union(store2);
Run Code Online (Sandbox Code Playgroud)

或者

var union =
     (from MemberInfo member in Whitelist.Members select member.ToString()).Union
     (from Type type in Whitelist.Types select type.ToString());
Run Code Online (Sandbox Code Playgroud)

或同等学历

var union =
    (from MemberInfo member in Whitelist.Members select member.ToString()).Concat
    (from Type type in Whitelist.Types select type.ToString()).Distinct();
Run Code Online (Sandbox Code Playgroud)