如何使用 Take 从 linq 查询中获取单个元素

问题描述 投票:0回答:1

在 C# 中,如果您使用 Take(1) 并且列表没有元素,则会出现异常。例如,我有这个片段:

from secRegister in db.Reports.SecRegisters().Where(sr => sr.IssuerID == -1).Take(1);

我输入了一个虚假的 IssuerID -1 以确保没有返回任何元素。如何仅获取第一个元素,同时还检查以确保列表至少有一个元素?

c# linq
1个回答
0
投票

如果您只想返回 IEnumerable 或 IQueryable 中的第一个元素,如果没有这样的元素则抛出异常,请使用 First:

from secRegister in db.Reports.SecRegisters().Where(sr => sr.IssuerID == -1).First()

如果您只想返回 IEnumerable 或 IQueryable 中的第一个元素,如果没有这样的元素则返回 default(T),请使用 FirstOrDefault:

from secRegister in db.Reports.SecRegisters().Where(sr => sr.IssuerID == -1).FirstOrDefault()
© www.soinside.com 2019 - 2024. All rights reserved.