C# 如何使用存在于另一个数组和该数组中的值在数组中查找索引?
我有一个c#类,看起来像这样:C# 如何使用存在于另一个数组和该数组中的值在数组中查找索引?,c#,arrays,C#,Arrays,我有一个c#类,看起来像这样: public class MemberData { public int meme_ck; public string meme_name; public bool meme_active; public MemberData(int ck2, string name2, bool active2) { meme_ck = ck2; meme_name = name2;
public class MemberData
{
public int meme_ck;
public string meme_name;
public bool meme_active;
public MemberData(int ck2, string name2, bool active2)
{
meme_ck = ck2;
meme_name = name2;
meme_active = active2;
}
}
我用该类制作了两个数组:
private MemberData[] memarray1 = new MemberData[10000];
private MemberData[] memarray2 = new Memberdata[10000];
在我的应用过程中,我使用这两个数组做了大量工作,值也发生了变化,等等。成员的名称或活动状态可能会发生变化,这会导致Arary变得不同
最后,我需要将它们进行比较,以便根据第一个结果与另一个进行比较
例如,根据应用程序执行的操作,第一个数组中的成员被取消激活,我需要更新数组2以取消激活该成员
我试图使用一些数据库设计哲学和int-CK(人工键),以便能够基于CK在另一个数组中快速查找条目
由于我无法理解,我不得不求助于像这样使用嵌套for循环,这很糟糕:
foreach (Memberdata md in memarray1)
{
foreach (Memberdatamd2 in memarray2)
{
if (md.ck = md2.ck)
{
//de-activate member
}
}
}
有更好的方法吗?当我从第一个数组得到CK值时,我只想在第二个数组中找到基于CK的索引
如果您有关于结构的任何其他提示或建议,也将不胜感激。我应该使用数组以外的东西吗?我如何使用列表完成同样的事情
谢谢
我应该使用数组以外的东西吗
对。不要使用数组;它们很少是正确的数据结构
我如何使用列表完成同样的事情
列表只是稍微好一点。它们不支持有效的按键查找操作,而这正是您所需要的
听起来你想要的不是两个数组,两个
字典
,关键是ck
我完全同意上面Eric Lippert的回答。最好不要使用数组
。
使用列表
也可以实现同样的效果。您还可以使用LINQ
查询数据结构
下面是使用数组实现结果的方法之一
class Program
{
static MemberData[] memarray1 = new MemberData[10000];
static MemberData[] memarray2 = new MemberData[10000];
static void Main(string[] args)
{
for (int i = 0; i < memarray1.Length; i++)
{
memarray1[i] = new MemberData(i + 1, "MemName" + i + 1, true);
memarray2[i] = new MemberData(i + 1, "MemName" + i + 1, true);
}
// SIMULATING YOUR APP OPERATION OF CHANGING A RANDOM ARRAY VALUE IN memarray1
int tempIndex = new Random().Next(0, 9999);
memarray1[tempIndex].meme_name = "ChangedName";
memarray1[tempIndex].meme_active = false;
//FOR YOUR UDERSTADNING TAKING meme_ck IN AN INTEGER VARIABLE
int ck_in_mem1 = memarray1[tempIndex].meme_ck;
//FINDING ITEM IN ARRAY2
MemberData tempData = memarray2.Where(val => val.meme_ck == ck_in_mem1).FirstOrDefault();
// THIS IS YOUR ITEM.
Console.ReadLine();
}
}
类程序
{
静态成员数据[]memarray1=新成员数据[10000];
静态成员数据[]memarray2=新成员数据[10000];
静态void Main(字符串[]参数)
{
for(int i=0;ival.meme_ck==ck_in_mem1.FirstOrDefault();
//这是您的商品。
Console.ReadLine();
}
}
您也可以使用:KeyedCollection嘿,谢谢!只是出于好奇,有没有一种方法也可以在数组结构中进行查找?我只是想学习。谢谢@约翰威廉姆斯:Array.IndexOf
谢谢!我在上面也问过Eric,但是在数组中也有这样做的方法吗?只是为了学习。我可以在使用相同代码的数组中使用Linq吗?此外,我还知道如何在数组中找到完全匹配的索引(int index=array.IndexOf(memarray1,memarray2[I])。是否可以使用它来查找匹配的特定字段,而不是必须匹配整个条目?再次感谢