在搜索列表时,是否有一个linq lambda搜索方法返回null而不是抛出异常?

我目前的解决方案是:(避免抛出异常)

if (list.Exists(x => x.Foo == Foo))
{
    var listItem = list.Find(x => x.Foo == Foo);
}

重复这样的表达是不对的.

就像是...

var listItem = list.Find(x => x.Foo == Foo);
if (listItem != null)
{
    //Do stuff
}

... 我感觉好多了.还是只有我?

你有更好的方法吗?(解决方案不必返回null,只有更好的解决方案才好)

推荐答案

var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
    //Do stuff
}

.net相关问答推荐

删除数据库项目中的表

如何规范机器之间连字符的排序顺序?

当 Func 委托需要接口作为参数时,它是如何工作的?

如何从控制台应用程序中的 Task.WaitAll() 获取返回值?

SqlDateTime.MinValue != DateTime.MinValue,为什么?

Int32.ToString() 是特定于文化的吗?

将双精度转换为带有 N 个小数的字符串,点作为小数分隔符,并且没有千位分隔符

.NET - 实现捕获所有异常处理程序的最佳方法是什么

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") 返回上午时间而不是下午时间?

什么是 Hashtable 的通用版本?

多个添加的实体可能具有相同的主键

mscorlib 代表什么?

是否可以完全用托管的 .NET 语言编写 JIT 编译器(本地代码)

如何仅在需要时提升权限?

无法加载文件或程序集Antlr3.Runtime (1)或其依赖项之一

无法加载文件或程序集System.ValueTuple

如何将 MailMessage 对象作为 *.eml 或 *.msg 文件保存到磁盘

在 IIS 中访问 .svc 文件时出现 HTTP 404

C# 应用程序中的资源和嵌入式资源有什么区别?

您可以将 Microsoft Entity Framework 与 Oracle 一起使用吗?