【发布时间】:2012-09-06 01:06:36
【问题描述】:
我想使用 myFilters 从 myCollection 中选择元素进行过滤:
var myFilters = new List<string> {"111", "222"};
var myCollection = new List<SomeClass> {
new SomeClass ("111"),
new SomeClass ("999")
};
from filter in myFilters
from item in myCollection
where item.Name == filter
select item
将返回“111”项。
但是,如果 myFilters 为空,我想从 myCollection 返回所有项目。
var myFilters = new List<string> ();
var myCollection = new List<SomeClass> {
new SomeClass ("111"),
new SomeClass ("999")
};
// Here's where I'm lost...
from filter in myFilters
from item in myCollection
where item.Name == filter
select item
将返回所有项目(“111”和“999”)。
【问题讨论】:
-
您将无法使用单个查询来执行此操作,因为类型不同。在一种情况下,您将返回一个 IEnumerable
,而在另一种情况下,您将返回一个 IEnumerable 。如果您的查询以 select item.Name 而不是 select item 结尾,情况会有所不同。 -
“第一个集合”和“第二个集合”如果引用局部变量名称会更清晰。类似于:“但是,当
myFilters为空时,我想返回myCollection中的所有项目而不进行过滤。” -
你是对的。现在我想清楚多了。
-
我知道我来晚了,你能提供你的SomeClass的代码吗?我想知道它的构造函数返回什么。
-
好吧,构造函数返回 SomeClass 的一个实例。