[英]How to logical and (^ , logical conjunction) string lists - C#
好的。 现在这个问题可能会很奇怪,但我必须解决。 现在问题很简单了。 我以身作则
可以说我有以下字符串列表。 每行都是一个列表,这些列表将是逻辑与
my,car,fly,surf,buy
house,home,car,fly,buy
fly,king,rock,buy,sell
fly,buy,home,rock,sell
好吧,如果您在逻辑上和上面列出的那样,结果将是
fly,buy
因为那些2是那些列表中唯一相同的元素。 现在如何使用C#4.0实现这种最快的运行时方式? 谢谢
c#,c#-4.0
您可以使用LINQ给出的Intersect方法。 例如:
List<string> a = new List<string>() {"my","car","fly","surf","buy"};
List<string> b = new List<string>() {"house","home","car","fly","buy" };
var c = a.Intersect(b);
提供汽车,飞行和购买。 对其余字符串重复c
上的交点以获取完整的交点。
List<List<string>> lists = //whatever
HashSet<string> set = new HashSet<string>(lists[0]);
for(int i = 1; i < lists.Count; i++)
{
set.IntersectWith(lists[i]);
}
使用linq可以使用:
var intersection = lists.Aggregate((l1, l2) => l1.Intersect(l2).ToList());
您可以使用HashSet<T>
:
IEnumerable<T> IntersectAll(IEnumerable<T> lists)
{
var set = new HashSet<T>(lists.First());
foreach (var other in lists.Skip(1))
{
set.IntersectWith(other);
}
return set;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.