C# 比较两个列表,然后指定元素是否相等
大家好,我正在尝试比较两个大小不同的列表,但是如果一个列表包含与另一个列表相同的内容,我希望将特定元素设置为不同的对象C# 比较两个列表,然后指定元素是否相等,c#,list,C#,List,大家好,我正在尝试比较两个大小不同的列表,但是如果一个列表包含与另一个列表相同的内容,我希望将特定元素设置为不同的对象 for (int i = StartItemIdx; i < EndItemIdx; i++) { TmpOrderItem = mIOrder.mCurrentOrderItems[i]; //more code follows within this loop }
for (int i = StartItemIdx; i < EndItemIdx; i++)
{
TmpOrderItem = mIOrder.mCurrentOrderItems[i];
//more code follows within this loop
}
我有另一个名为“temp”的列表,它的类型与“mIOrder.mCurrentOrderItems”的类型相同,我所做的是在“temp”TmpOrderItem中找到的每个元素都将等于它。但不知何故,我需要我的命令,我需要我的命令
换句话说,我需要检查'mIOrder.mCurrentOrderItems'中的元素与'temp'中的元素是否相等,然后以某种方式将其附加到上面
for (int i = StartItemIdx; i < EndItemIdx; i++)
{
TmpOrderItem = temp[i]; // is basically what I want but with the first example used
//more code follows within this loop
}
我试着做:
for (int i = StartItemIdx; i < EndItemIdx; i++)
{
if(mIOrder.mCurrentOrderItems[i] == temp[i])
TmpOrderItem = mIOrder.mCurrentOrderItems[i];
else break;
//more code follows within this loop
}
但因为它们的大小在大多数情况下都不同,所以我得到了超出范围的期望值。您可以通过linq intersect合并这两个列表。 以下是此网页中的一个示例Linq是你的朋友。使用Intersect方法,如果开始索引和结束索引很重要,可以使用Skip和Take方法来确保在特定范围内工作
var intersections = mIOrder.mCurrentOrderItems.Intersect(temp);
foreach (var item in intersections)
{
//Do whatever with item
}
不是我的否决票,虽然链接可能会回答问题,但建议在您的答案中添加必要的代码部分,因为链接可能会失效。还不是我的否决票:链接的唯一答案应该是评论,您已经有权这样做了。。。或者,为了得到好的答案,请确保提供完整的样本,除了链接外,还提供小的内联摘要。谢谢!尚未解决我的问题,但回答了我的问题: