首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何比较两个列表,在c#中,使用两个参数(如左连接)

如何比较两个列表,在c#中,使用两个参数(如左连接)
EN

Stack Overflow用户
提问于 2019-06-12 07:18:43
回答 2查看 0关注 0票数 0

我尝试两个比较两个列表,但有2个参数。我想要左连接列表。

列表1

[0] 1 , "cat11" , 1
[1] 2 , "cat12" , 1
[2] 3 , "cat13" , 1
[3] 4 , "cat14" , 1
[4] 5 , "cat15" , 1
[5] 6 , "cat16" , 1
[5] 1 , "cat31" , 3
[5] 1 , "cat41" , 4

列表2

[0] 1 , 4
[1] 1 , 5
[2] 3 , 1

等价是

list1.codigo1 <=> list2.cod2
list1.codigo2 <=> list2.cod1

我想回来,但我不知道如何比较两个值;

[0] 4 , "cat14" , 1
[1] 5 , "cat15" , 1
[2] 1 , "cat31" , 3
EN

Stack Overflow用户

发布于 2019-06-12 16:22:14

看起来这就是你需要的。我强烈建议你阅读这篇文章。您可以在此处使用此代码。

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
   public class Item1 
   {
      public int Codigo1 { get; set; }

      public string Name { get; set; }

      public int Codigo2 { get; set; }      
  }

  public class Item2
  {
    public int Cod1 { get; set; }

    public int Cod2 { get; set; }
  }

  public static void Main()
  {
    var list1 = new List<Item1>() {
        new Item1() { Codigo1 = 1, Name = "cat11", Codigo2 = 1 },
        new Item1() { Codigo1 = 2, Name = "cat12", Codigo2 = 1 },
        new Item1() { Codigo1 = 3, Name = "cat13", Codigo2 = 1 },
        new Item1() { Codigo1 = 4, Name = "cat14", Codigo2 = 1 },
        new Item1() { Codigo1 = 5, Name = "cat15", Codigo2 = 1 },
        new Item1() { Codigo1 = 6, Name = "cat16", Codigo2 = 1 },
        new Item1() { Codigo1 = 1, Name = "cat31", Codigo2 = 3 },
        new Item1() { Codigo1 = 1, Name = "cat41", Codigo2 = 4 }
    };

    var list2 = new List<Item2>() {
        new Item2() { Cod1 = 1, Cod2 = 4 },
        new Item2() { Cod1 = 1, Cod2 = 5 },
        new Item2() { Cod1 = 3, Cod2 = 1 }
    };

    var result = from l1 in list1
                 join l2 in list2 
                 on new { a = l1.Codigo1, b = l1.Codigo2 } equals  new { a= l2.Cod2, b= l2.Cod1 }
                 select new { Codigo1 = l1.Codigo1, Name = l1.Name, Codigo2 = l1.Codigo2 };


    foreach(var r in result)
    {
        Console.WriteLine(r.Codigo1 + " " + r.Name + " " + r.Codigo2);
    }
  }
}

预期结果

4 cat14 1

5 cat15 1

1 cat31 3
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档