多列表迭代

时间:2018-12-03 20:00:07

标签: c# list for-loop foreach

我有(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中具有相同标识符“ Comment”的每个项目,如果是,则将当前a&b值发送到函数中处理并继续循环列表A的其余部分。

2 个答案:

答案 0 :(得分:0)

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

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

如果注释是字符串,而item是类型。

Dictionary<string, item>

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

当然,词典中不能有多个具有相同键的项。如果对注释没有唯一的约束,那么您的字典可能会像这样

Dictionary<string, List<item>>

在没有完整上下文的情况下,我不会对代码进行更详细的介绍,但是我想您明白了。

答案 1 :(得分:-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])