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