【问题标题】:Store and access a list inside of a list存储和访问列表内的列表
【发布时间】:2012-05-21 21:22:26
【问题描述】:

我需要根据两个列表中的一个字段将两个列表合并为一个列表,然后访问合并列表中的信息。

示例伪代码

List1.merge;
List2.merge2;
MergedList = List1.merge join List2.merge2;
MergedList.Merge2 or MergedList.Any Field in List

【问题讨论】:

  • 提供一些关于列表和合并目的的信息,至少是一个简单的示例。
  • 合并的意思是要并行枚举两个列表,选择一个新元素,结合两个列表元素类型的属性?如果是这样,有一个Zip extension method 可能会带你到那里。
  • 目前我有两个列表进来。每个列表都包含字段和数据。我需要基于一个字段合并两个列表。一旦合并到一个列表中,我就需要能够访问列表中的字段和数据。

标签: c# linq list


【解决方案1】:

Concat 呢?

var myList = list1
    .Where(l => list2
        .Any(l2 => l2.Field == l.Field)
    .Concat(list2
        .Where(l2 => list
            .Any(l => l.Field == l2.Field))
    .ToList();

【讨论】:

  • 使用 Concat 需要什么库?当我输入点时,我无法让它显示在自动完成菜单中。
  • 只需将using System.Linq 添加到文件顶部就可以了:)
  • 我的控制台应用程序中有这个,但仍然没有运气
  • 嗯,您使用的是 .NET 3.5 或更高版本吗?在 Visual Studio 中右键单击您的控制台应用程序项目,单击“属性”,然后将“目标框架”更改为 3.5 或更高版本:)。
【解决方案2】:

简单的 lambda 连接怎么样?

list1.Join(list2, l1 => l1.Field, l2 => l2.field, (l1,l2) => new SomeORAnonymousObjectType { ListItem1 = l1, ListItemType2 = l2 }).ToArray().ToList().ToEnumerable();

【讨论】:

    【解决方案3】:

    这是一个基本示例,您应该能够根据需要进行调整:

    using System.Linq; // Add these two lines to the using statements 
                       // at the top of your file
    using System.Collections.Generic;
    
    var l1 = new List<Uri>() { new Uri("http://www.facebook.com"), new Uri("http://www.yahoo.com"), new Uri("http://www.google.com") };
    var l2 = new List<Uri>() { new Uri("http://www.google.com"), new Uri("http://www.nytimes.com"), new Uri("http://www.facebook.com") };
    
    var q = from Uri uri1 in l1 
            join Uri uri2 in l2 on uri1.Host equals uri2.Host select uri2;
    
    var commonUris = q.ToList();  // Result
    

    关键线是equals周围的那条线

    请注意,如果任何项目在任一列表中出现多次,这可能不会产生预期结果。

    【讨论】:

      【解决方案4】:

      这个问题现在已经解决了。我创建了一个引用类的列表,存储了我的信息,一旦我这样做了,我就能够管理和访问我需要的一切。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多