c#比较数组

Car*_*pez 4 c# linq list

大家下午好

问题有点简单,但整个下午我都遇到了问题

我有2个列表:

  • 整体列表(ids)
  • 对象列表(包含ids)

我想比较它们,但我想获得没有一对的id(如果它存在)

我想知道是否有ac#或linq方法来识别两个数组中不同的值

如果我有

List<int> ids = {1,2,3,4,5}
Run Code Online (Sandbox Code Playgroud)

List<objectX> x = (contains id,code, and description)
Run Code Online (Sandbox Code Playgroud)

而我正在尝试类似的东西

foreach (int id in ids)
        {
            foreach (objectX item in x)
            {
                if (item.id == id)
                {
                    break;
                }
                else
                    idDiferentes.Add(id);
            }
        }
Run Code Online (Sandbox Code Playgroud)

但是你可以想象它不起作用

例如

ids= {1,2,3,4}
objectx[id] ={1,3,2}
Run Code Online (Sandbox Code Playgroud)

当我比较它们时,它们是不同的,所以我得到一个更大的列表,我需要的那个

我也尝试过linq外连接,但我不明白它是如何工作的

Ant*_*ram 10

var idsWithoutObjects = ids.Except(x.Select(item => item.id));
Run Code Online (Sandbox Code Playgroud)


Run*_*tad 7

你所追求的是Except扩展方法.它为您提供了两个序列之间的集合差异.

所以你可以做这样的事情(伪c#-code):

var idDifferences = x.Select(item => item.id).Except(ids);
Run Code Online (Sandbox Code Playgroud)