我要選擇使用myFilters的用於過濾從MyCollection的元素:使用LINQ,如何有條件地選擇一些項目,但沒有條件時全部選中?
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 。如果你的查詢以選擇item.Name而不是選擇項目結束,事情會有所不同。 –
itsme86
如果本地變量名稱被引用,則「第一個集合」和「第二個集合」會更清晰。例如:「但是,當myFilters爲空時,我想不經過濾就返回myCollection中的所有項目。」 – devgeezer
你說得對。我想現在更清楚了。 –