這是措辭的問題,你的方式想要的東西,導致自然翻譯成LINQ:
- 你想從
userEducation
項目(即暗示你會userEducation
開始)
- 凡的
ignoreEducationKeywords
沒有有子。
- 「無」 等同於 「沒有任何」
- 要檢查是否有子,你可以使用
Contains
這導致:
var query = userEducation
.Where(candidate => !ignoredKeyWords.Any(ignore => candidate.Contains(ignore)));
同樣的思維過程可以幫助許多其他查詢。
另一種選擇是創建自己的None
擴展方法,假設你使用LINQ to對象:
public static class Extensions
{
public static bool None(this IEnumerable<T> source, Func<T, bool> predicate)
=> !source.Any(predicate);
}
然後,你可以重寫查詢,而不否定:
var query = userEducation
.Where(candidate => ignoredKeyWords.None(ignore => candidate.Contains(ignore)));
使用左外加入。請參閱MSDN:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng
@jdweng:我認爲沒有必要加入夜... –
'userEducation.Where(E => ignoreEducationKeywords.All(我=>!e。包含(i)))' – juharr