我有(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的其余部分。
答案 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])