比较两个列表,然后指定if元素相等
本文关键字:if 元素 然后 列表 两个 比较 | 更新日期: 2023-09-27 18:00:40
大家好,我正在尝试比较两个大小不同的列表,但如果一个列表包含与另一个列表相同的列表,我希望将特定元素设置为不同的对象。
for (int i = StartItemIdx; i < EndItemIdx; i++)
{
TmpOrderItem = mIOrder.mCurrentOrderItems[i];
//more code follows within this loop
}
我有另一个名为"temp"的列表,它与"mIOrder.mCurrentOrderItems"的类型相同。我所要做的是,对于在"temp"中找到的每个元素,TmpOrderItem都将等于它。但不知何故,需要mIOrder.currentOrderItems[I]来完成它。
换句话说,我需要检查"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
方法,如果开始索引和结束索引很重要,则可以使用Skip
和Take
方法来确保您在特定范围内工作。
var intersections = mIOrder.mCurrentOrderItems.Intersect(temp);
foreach (var item in intersections)
{
//Do whatever with item
}
您可以linq intersect来合并这两个列表。这是这个网页上的一个例子http://www.dotnetlines.com/Blogs/tabid/85/EntryId/47/Using-Intersect-method-of-LINQ-to-retrieve-common-elements-from-two-arrays.aspx