簡單地說,我想知道這是否可能?是否可以傳遞未初始化的條件?
if (Descriptionsearch.Checked)
{
searchResult = searchResultBuilder(a.Description == textBox.Text))
}
else if (titleSearch.Checked)
{
searchReuslt = searchResultBuilder(a.title == textBox.Text))
}
正如你所看到的,我只是發送一個尚未初始化但將在使用時的變量條件。
private List<int> searchResultBuilder(Func<bool> condition)
{
foreach (var element in currentPosition.Where(a => condition()))
{
searchResults.Add(currentPosition.IndexOf(element));
}
return searchResults;
}
我只是想知道是否有辦法做到這一點。
,因爲人們都在問這是從我的原代碼迴路
foreach(var element in main.currentPosition.Where(a => (a.key != null && main.msgSigCollection1.msgSig[(int)a.key].Description.IndexOf(searchTextBox.Text, StringComparison.OrdinalIgnoreCase) >= 0) || (a.value != null && main.msgSigCollection2.msgSig[(int)a.value].Description.IndexOf(searchTextBox.Text, StringComparison.OrdinalIgnoreCase) >= 0)))
{
searchResults.Add(main.currentPosition.IndexOf(element));
}
其中currentPosition
是List<int?,int?>
使用謂詞構建器http://www.albahari.com/nutshell/predicatebuilder.aspx –
所以你知道,'a.Description == textBox.Text'是一個布爾值,而不是'Func' –
gunr2171
爲什麼不能你只是測試它而不是發佈到SO。並且您沒有返回列表。 –
Paparazzi