您好我使用顺序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未被添加)
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
使用FirstOrDefault而不是First,如果找不到任何元素,你将获得一个null对象。
使用lamda你可以写:
var ThirdHighestSal = Employee.getAllEmployee().Select(x => x.Salary).Distinct().OrderByDescending(x => x).Skip(2).FirstOrDefault();
然后你得到null或(如果存在)第三高薪。