Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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

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/Lambda查找员工的第N个最高工资_C#_Linq - Fatal编程技术网

C# 使用LINQ/Lambda查找员工的第N个最高工资

C# 使用LINQ/Lambda查找员工的第N个最高工资,c#,linq,C#,Linq,嗨,我用顺序Linq从像这样的员工那里拿到了第n个最高的薪水 var ThirdHighestSal = from vr in Employee.getAllEmployee() group vr by vr.Salary into gr orderby gr.Key descending select( new {salary=gr.OrderBy(x=>x.Salary).Sk

嗨,我用顺序Linq从像这样的员工那里拿到了第n个最高的薪水

    var ThirdHighestSal = from vr in Employee.getAllEmployee()
                 group vr by vr.Salary into gr
                 orderby gr.Key descending
                 select( new {salary=gr.OrderBy(x=>x.Salary).Skip(2).First()});
        foreach (var sal in ThirdHighestSal)
        {
            Console.WriteLine("3rd highest sal is {0}",sal.salary);
        }
当我执行此命令时,它会抛出异常,如

序列不包含元素(InvalidOperationException未处理)


有人能帮我查询吗?

使用FirstOrDefault而不是First,如果找不到元素,您将得到一个空对象

有了lamda,你可以写:

 var ThirdHighestSal = Employee.getAllEmployee().Select(x => x.Salary).Distinct().OrderByDescending(x => x).Skip(2).FirstOrDefault();

然后你会得到空值或(如果存在)第三高工资。

这不是答案,这应该是一条评论。这条评论是不必要的。你可以用国旗,谢谢。在未来,我将添加简短的答案作为评论!这不是简单的回答。您的回答无法解决OP的问题。引发异常是因为First()在序列中找不到任何项。这可以通过使用FirstOrDefault()来避免。但是为了进一步使用该对象,您必须检查它是否为null。所以我想这会解决他的问题。可能是