我注意到我无法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)
答案是不。正如您在查询语法中所能做的那样,它缺少一些基本操作(如您所见)。您将不得不使用扩展方法。
给定的
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)
| 归档时间: |
|
| 查看次数: |
5139 次 |
| 最近记录: |