Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ将以前的记录获取到当前记录_C#_Linq - Fatal编程技术网

C# 使用LINQ将以前的记录获取到当前记录

C# 使用LINQ将以前的记录获取到当前记录,c#,linq,C#,Linq,如果我有一个项目列表,并且说“id”是唯一的,但不一定是连续的,那么有没有办法在列表或IEnumerable中找到前面的实体 因此,我可能有一个人员列表,他们每个人都有一个id,并且按照我不知道的顺序进行排序。我得到的只是名单和那个人的身份证 现在我需要让前一个人获得提供给我的id 有没有一种很好的LINQ方法可以做到这一点,或者我只是简单地找到记录并在ForEach中获取上一条记录 编辑 我刚发现这个,这是最好的方法吗 我想你需要这个 items.TakeWhile(x => x.id

如果我有一个项目列表,并且说“id”是唯一的,但不一定是连续的,那么有没有办法在列表或IEnumerable中找到前面的实体

因此,我可能有一个人员列表,他们每个人都有一个id,并且按照我不知道的顺序进行排序。我得到的只是名单和那个人的身份证

现在我需要让前一个人获得提供给我的id

有没有一种很好的LINQ方法可以做到这一点,或者我只是简单地找到记录并在ForEach中获取上一条记录

编辑 我刚发现这个,这是最好的方法吗

我想你需要这个

 items.TakeWhile(x => x.id != id).LastOrDefault();
  • Enumerable.TakeWhile
    方法返回序列中的元素,只要指定的条件为true,然后跳过其余元素
  • 我们从中获取最后一个或
    默认值

这假设项目是有序的,而根据问题,它们不是。实际上,这是有效的,因为我使用items.TakeWhile(x=>x.id!=id).LastOrDefault();然后选择上一条记录。(除了将其更改为上面griegs给出的形式。)@AntP不,它没有。也许你误解了这个问题。我认为OP的意思是它们没有被排序,或者集合不是连续的,所以你不能停在ID小于“current”的项目上。这个解决方案有效。嗯,似乎我误解了这个问题,但“我需要让前一个人找到提供给我的id”,这有点含糊不清。