我有两个字符串列表:
List<string> lotterynumber;
List<string> lotterywinningnumber;
Run Code Online (Sandbox Code Playgroud)
我想看看 a 是否lotterynumber在lotterywinningnumber.
foreach我现在正在使用循环:
bool b = false;
foreach(string s in lotterynumber)
{
if(lotterywinningnumber.contains(s))
{
b= true;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在 Linq 中做到这一点吗?
您可以使用Enumerable.Intersect来完成此操作。它将返回一个新的 Enumerable,其中包含两个集合中都存在的项目。
var lotteryNumbers = new List<string>() { "1", "2", "3" };
var lotteryWinningNumbers = new List<string>() { "2", "3", "5" };
var numbersInBoth = lotteryNumbers.Intersect(lotteryWinningNumbers); // { "2", "3" }
Run Code Online (Sandbox Code Playgroud)
来自 MSDN:
两个集合 A 和 B 的交集被定义为包含 A 中也出现在 B 中的所有元素但不包含其他元素的集合。当枚举此方法返回的对象时,Intersect 首先进行枚举,收集该序列的所有不同元素。然后它枚举第二个,标记在两个序列中出现的那些元素。最后,标记的元素按照它们被收集的顺序生成。
using 的好处Intersect是它将返回两个集合中都存在的值,而不仅仅是布尔值。
显然,如果您需要布尔值,您只需检查结果集合是否包含任何元素:
bool contains = lotteryNumbers.Intersect(lotteryWinningNumbers).Any();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2605 次 |
| 最近记录: |