-1

我有(2)个列表,我们称之为列表 A 和列表 B,它们的长度可能不同。每个项目都有一个与其关联的包含参数作为标识符,在这种情况下我们可以调用 Comment。我需要迭代:

foreach (item a in A)
{
      foreach (item b in B)
      {
           if (b.Comment == a.Comment)
           {
            send to a void to process: void(b,a);

本质上,如果它们具有相同的标识符,我需要将每个项目从一个列表处理到另一个列表。在这种情况下,拉链会受益吗?根据我的布局,从逻辑上讲,我想循环列表 A 中的每个项目,检查列表 B 中具有相同标识符“注释”的每个项目,如果是,则将当前的 a & b 值发送到函数中处理并继续循环列表 A 的其余部分。

4

2 回答 2

0

重新考虑您正在使用的集合类型。

如果您将其中一个列表作为字典,其中键是注释,则只需迭代其中一个列表,然后检查您的字典是否包含该列表。

如果comment 是字符串,item 是类型。

Dictionary<string, item>

使用 LINQ 很容易生成字典:https ://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.todictionary

当然,您不能在字典中拥有多个具有相同键的项目。如果评论没有唯一约束,您的字典可能如下所示

Dictionary<string, List<item>>

如果没有完整的上下文,我不会更详细地介绍代码,但我认为你明白了。

于 2018-12-03T20:23:55.053 回答
-1

经过一些研究,我采用笛卡尔积路线获得每对各自的 [0] 和 [1] 元素

var Fruits =
from apple in ListA
from Banana in ListB
select new[] {apple, Banana};

then went on to break down sending Smoothie(Fruits[0],Fruits[1])
于 2018-12-05T19:22:27.903 回答