比较两个列表,然后指定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
    }

但因为它们在大多数时候都有不同的尺寸,我得到了超出范围的期望。

比较两个列表,然后指定if元素相等

Linq是你的朋友。使用Intersect方法,如果开始索引和结束索引很重要,则可以使用SkipTake方法来确保您在特定范围内工作。

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