C# 检查arraylist中的所有字符串是否包含在其他arraylist中

C# 检查arraylist中的所有字符串是否包含在其他arraylist中,c#,C#,我尝试使Arraylist中的所有值都包含在其他Arraylist(所有值)中 Arraylist one: Name Item ArrayList二: Item Name Count 注意:列表被洗牌 我试过这个: foreach (string str1 in arraylistone) { if (arraylisttwo.Contains(str1))

我尝试使Arraylist中的所有值都包含在其他Arraylist(所有值)中

Arraylist one:

Name
Item
ArrayList二:

Item
Name
Count
注意:列表被洗牌

我试过这个:

foreach (string str1 in arraylistone)
                            {
                                if (arraylisttwo.Contains(str1))
                                {
                                    //return true;
                                }
                            }

但如果包含某个元素,则可以使用Enumerable.Intersect

        var listA = new List<string> { "Name", "Item" };
        var listB = new List<string> { "Name", "Item","Count" };

        var c = listA.Intersect(listB).ToList();
var listA=新列表{“名称”,“项目”};
var listB=新列表{“名称”、“项目”、“计数”};
var c=listA.Intersect(listB.ToList();

您可以使用Enumerable.Intersect

        var listA = new List<string> { "Name", "Item" };
        var listB = new List<string> { "Name", "Item","Count" };

        var c = listA.Intersect(listB).ToList();
var listA=新列表{“名称”,“项目”};
var listB=新列表{“名称”、“项目”、“计数”};
var c=listA.Intersect(listB.ToList();

给猫剥皮的方法有很多。下面是一个使用Linq的
Join
扩展方法的示例:

var list1 = new[] { "Name",  "Item" };
var list2 = new[] { "Item", "Name", "Count" };
var join = list1.Join(list2, l1 => l1, l2 => l2, (l1, l2) => new { l1, l2 });
var allContained = join.Count() == list1.Count();
只是小心比较字符串。有一个重载,它使用
IEqualityComparer
来定义如何比较键

更新:

正如Alex Leo指出的,您可以使用
Intersect

 var allContained = list1.Intersect(list2).Count() == list1.Count();

更简单,它还提供了一个
IEqualityComparer
过载。

给猫剥皮的方法有很多。下面是一个使用Linq的
Join
扩展方法的示例:

var list1 = new[] { "Name",  "Item" };
var list2 = new[] { "Item", "Name", "Count" };
var join = list1.Join(list2, l1 => l1, l2 => l2, (l1, l2) => new { l1, l2 });
var allContained = join.Count() == list1.Count();
只是小心比较字符串。有一个重载,它使用
IEqualityComparer
来定义如何比较键

更新:

正如Alex Leo指出的,您可以使用
Intersect

 var allContained = list1.Intersect(list2).Count() == list1.Count();

更简单,它还提供了一个
IEqualityComparer
重载。

试试这样的方法

var arrayOne = new string[4];
    arrayOne[0] = "Item1";
    arrayOne[1] = "Item2";
    arrayOne[2] = "Item3";
    arrayOne[3] = "Item4";

var arrayTwo = new string[4];
    arrayTwo[0] = "Item1";
    arrayTwo[1] = "Item2";
    arrayTwo[2] = "Item3";
    arrayTwo[3] = "Item4";

    var allItemIsThere = true;

    foreach (var one in arrayOne)
    {
        allItemIsThere = arrayTwo.Contains(one);
        if(!allItemIsThere)
        { break;}
    }

试试这样的

var arrayOne = new string[4];
    arrayOne[0] = "Item1";
    arrayOne[1] = "Item2";
    arrayOne[2] = "Item3";
    arrayOne[3] = "Item4";

var arrayTwo = new string[4];
    arrayTwo[0] = "Item1";
    arrayTwo[1] = "Item2";
    arrayTwo[2] = "Item3";
    arrayTwo[3] = "Item4";

    var allItemIsThere = true;

    foreach (var one in arrayOne)
    {
        allItemIsThere = arrayTwo.Contains(one);
        if(!allItemIsThere)
        { break;}
    }


如何从Linq获取Join?@Slinidy:在顶部添加using语句:
using System.Linq我添加并没有使用我的arraylist:public arraylist arraylist=new arraylist();您需要先将
ArrayList
强制转换为
ArrayList
数组:
arraylistone.ToArray()
。如何从Linq获取联接?@Slinidy:在顶部添加一个using语句:
using System.Linq我添加并没有使用我的arraylist:public arraylist arraylist=new arraylist();您需要先将
ArrayList
强制转换为
ArrayList
数组:
arraylistone.ToArray()
。没有任何方法可以满足您需要的使用系统。Linq;语句我添加并没有使用我的arraylist:public arraylist arraylist=new arraylist();ArrayList没有.Intersect方法。我们建议使用列表系统。Collections.Generic;没有任何方法可以满足您需要使用系统的需求;语句我添加并没有使用我的arraylist:public arraylist arraylist=new arraylist();ArrayList没有.Intersect方法。我们建议使用列表系统。Collections.Generic;使用
列表
。不要使用
ArrayList
,除非你喜欢让生活变得更艰难……我本不可能做出更好的声明。谢谢@elgonzoUse
列表
。不要使用
ArrayList
,除非你喜欢让生活变得更艰难……我本不可能做出更好的声明。谢谢@elgonzo