如您所见,我在下面给出的列表中有明确的匹配项。但是,firstordefault返回Null。我该如何解决?
我有2个List对象。 OldAnimals和LatestAnimals。我需要在最新动物列表中找到oldAnimal的匹配项。
我的代码如下:
oldAnimal = [{"iden":1 , "gen": "aaa"},{"iden":2 , "gen": "bbb"},{"iden":3 , "gen": "ccc"},{"iden":4 , "gen": "aaxde"}]
latestAnimal= [{"iden":1 , "gen": "xxx"},{"iden":2 , "gen": "xddfddse"},{"iden":3 , "gen": "ccc"},{"iden":4 , "gen": "aaxde"}]
Animal ani= latestAnimal.FirstOrDefault(a=> a.iden == oldAnimal.iden &&
a.gen== oldAnimal.gen
);
答案 0 :(得分:0)
您的查询应如下:
var animals = latestAnimal.Where(l => oldAnimal.All(o => o.iden == a.iden && o.gen == a.gen)).ToArray();
答案 1 :(得分:0)
它没有执行您想要的操作,因为您仅在一个数组上进行迭代。您想以某种方式遍历两者。
您编写的代码会检查是否latestAnimal[0].iden == oldAnimal.iden
,然后检查是否latestAnimal[1].iden == oldAnimal.iden
,等等
我认为您实际上是想先检查latestAnimal[0].iden == oldAnimal[0].iden
根据您发布的代码,我无法确定您是否要将latestAnimal[0]
与oldAnimal[1]
进行比较。如果您不这样做,我建议使用for循环。如果这样做,可以使用嵌套的for循环或latestAnimal.FirstOrDefault(a=> oldAnimal.Any(b =>
等