我有兩個清單
List<string> setA = new List<string>() {"cat", "dog", "elephant"};
List<string> setB = new List<string>() {"cat"};
我有 bool
bool compare = setA.Any(x => x.Equals(setB.Select(y => y)));假設檢查我是否有來自 setA 的任何字串 eqauls 來自 setB 的字串“cat”。它假設是“真”,但它不是:/(顯示我為“假”)
我做錯了什么?
uj5u.com熱心網友回復:
你的做法是錯誤的:
bool compare = setA.Any(x => x.Equals(setB.Select(y => y)));
這會執行以下操作:檢查是否有任何字串setA等于從IEnumerable<string>回傳的實體setB.Select(y => y)。因此,您基本上是將字串與永遠不正確的 LINQ 查詢進行比較。
這是檢查 A 中是否有任何字串在 B 中的最有效方法:
bool compare = setA.Intersect(setB).Any();
您也可以使用它,如果串列很大,則效率較低;
bool compare = setA.Any(setB.Contains);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344916.html
標籤:林克
上一篇:找到解決方案/回傳后如何停止遞回
