gpt4 book ai didi

c# - SingleOrDefault() 的最佳实践

转载 作者:太空狗 更新时间:2023-10-29 23:58:29 27 4
gpt4 key购买 nike

我想让我的代码更好。我可以安全地将第一个示例重写为第二个示例吗?

IQueryable<PDF> pdfList = (from pdfobj in pdfDataContext.PDFs
where pdfobj.Id == pdfId
select pdfobj);
if (pdfList.Count() > 0)
{
PDF pdfOldWay = pdfList.FirstOrDefault();
pdfOldWay. // do something. (pdfOldWay can't be null here...)
}

--

PDF pdfNewWay = (from pdfobj in pdfDataContext.PDFs 
where pdfobj.Id == pdfId
select pdfobj).SingleOrDefault();
if (pdfNewWay != null)
{
// do something
}

--

编辑:

抱歉没说清楚。我的问题是直接获取 PDF 对象,而不必先使用列表。我不想检查计数是否大于 0,因为它看起来不太好。

最佳答案

是的,这看起来很安全。您还可以稍微简化您的查询:

PDF pdfNewWay = pdfDataContext.PDFs.SingleOrDefault(p => p.Id == pdfId);
if (pdfNewWay != null)
{
// do something
}

SingleOrDefault 和 FirstOrDefault 之间的唯一区别是,如果找到多个匹配项,SingleOrDefault 将抛出异常,因此除非您想要此检查,否则您最好坚持使用 FirstOrDefault。

关于c# - SingleOrDefault() 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com