我注意到我无法使用两个选择的 union
构建 linq 查询,使用 ANSI syntax .
.net 文档有一篇关于 query syntax examples 的文章未显示联合的地方。然而,在.net examples for method syntax下, 给出了并集的例子。
我知道我可以结合查询语法选择和基于方法的选择来绕过这个问题,但我很好奇我是否可以完全不用基于方法的语法。
var strings =
from MemberInfo member in Whitelist.Members
select member.ToString()
union
from Type type in Whitelist.Types
select type.ToString();
最佳答案
答案是否定的。尽管您可以在查询语法中做很多事情,但它缺少一些基本操作(如您所见)。您将不得不使用扩展方法。
给定
Enumerable.Union Method (IEnumerable, IEnumerable)
Produces the set union of two sequences by using the default equality comparer.
示例
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);
或
var union =
(from MemberInfo member in Whitelist.Members select member.ToString()).Union
(from Type type in Whitelist.Types select type.ToString());
或等效
var union =
(from MemberInfo member in Whitelist.Members select member.ToString()).Concat
(from Type type in Whitelist.Types select type.ToString()).Distinct();
关于c# - 联合在 LINQ 查询语法中可用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50867644/