繁体   English   中英

如何逻辑和(^,逻辑连词)字符串列表-C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM