是否可以通过两个 id 从 IEnumerablle select 项目?

Is it possible to select items from IEnumerablle by two ids?

我有这段代码,我通常用它来 update/delete/create 个项目

HashSet<int> current = new HashSet<int>(diagram.Links.Select(lnk => lnk.IDInput);
HashSet<int> received = new HashSet<int>(d.Links.Select(lnk => lnk.IDInput));
IEnumerable<int> delete = current.Except(received);
IEnumerable<int> new = received.Except(current);

当我的列表使用一个 ID 时,它工作得很好,但在这种情况下,我想做类似 diagram.Links.Select(lnk => lnk.IDInput AND lnk.IDOutput) 的事情,甚至可能还是我应该改用 Where?

提前致谢

我会选择这 3 个选项中的一个

  1. 创建匿名对象

     diagram.Links.Select(lnk => new {lnk.IDInput, lnk.IDOutput})
    
  2. 创建值元组

     diagram.Links.Select(lnk => (lnk.IDInput, lnk.IDOutput))
    
  3. 使用 Class / 结构

     public class IDHolder
     {
         public string IDInput;
         public string IDOutput;
     }
    
     diagram.Links.Select(lnk => new IDHolder() {IDInput = lnk.IDInput, IDOutput = lnk.IDOutput}))
    

这三个都可以,后者在我看来是最连贯的,但请选择最适合您的。

为了不更改代码中的其他逻辑,您可以像这样简单地使用 Concat

HashSet<int> current = new HashSet<int>(diagram.Links.Select(lnk => lnk.IDInput)
.Concat(diagram.Links.Select(lnk => lnk.IDOutput)));

HashSet<int> received = new HashSet<int>(d.Links.Select(lnk => lnk.IDInput)
.Concat(d.Links.Select(lnk => lnk.IDOutput)));