要判断两个 List<string>
(dateList
和 LocalDate
)是否有交集,可以使用 LINQ(Language Integrated Query)来简化这个过程。以下三种方法来判断两个列表之间是否有交集。
方法 1: 使用 LINQ 的 Any
方法
csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<string> dateList = new List<string> { "2024-01-01", "2024-02-02", "2024-03-03" };
List<string> localDate = new List<string> { "2024-03-03", "2024-04-04" };
bool hasIntersection = dateList.Any(date => localDate.Contains(date));
if (hasIntersection)
{
Console.WriteLine("两个列表有交集。");
}
else
{
Console.WriteLine("两个列表没有交集。");
}
}
}
方法 2: 使用 LINQ 的 Intersect
方法
csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<string> dateList = new List<string> { "2024-01-01", "2024-02-02", "2024-03-03" };
List<string> localDate = new List<string> { "2024-03-03", "2024-04-04" };
var intersection = dateList.Intersect(localDate).Any();
if (intersection)
{
Console.WriteLine("两个列表有交集。");
}
else
{
Console.WriteLine("两个列表没有交集。");
}
}
}
方法 3: 使用集合操作
如果要频繁地检查交集,可以考虑将其中一个列表转换为集合(HashSet
),这样会提高查找效率。
csharp
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<string> dateList = new List<string> { "2024-01-01", "2024-02-02", "2024-03-03" };
List<string> localDate = new List<string> { "2024-03-03", "2024-04-04" };
HashSet<string> dateSet = new HashSet<string>(dateList);
bool hasIntersection = localDate.Any(date => dateSet.Contains(date));
if (hasIntersection)
{
Console.WriteLine("两个列表有交集。");
}
else
{
Console.WriteLine("两个列表没有交集。");
}
}
}
总结
- 方法 1 和 方法 2 使用 LINQ 提供了简洁的语法,适合大多数情况。
- 方法 3 使用集合操作可以在大量数据情况下提高性能,特别是当
localDate
列表较大时。