【问题标题】:Enforce FirstOrDefault to return null强制 FirstOrDefault 返回 null
【发布时间】:2019-03-24 18:35:28
【问题描述】:

如果在列表中找不到元素,我需要返回 null,但它返回一个空的 guid。

mappedTypes.Where(x => x.ReferenceId == new Guid("1a087b71-638c-4f3c-b1cf-3b0438c181c0")).Select(x=>x.MappingId).FirstOrDefault()

此查询仅返回 '00000000-0000-0000-0000-000000000000' - 我想返回 null - 或单个 guid 值(如果存在)。

【问题讨论】:

  • 您可以使用?. 来检查null,如下所示:mappedTypes.FirstOrDefault(a => a.ReferenceId ==new Guid("1a087b71-638c-4f3c-b1cf-3b0438c181c0"))?.MappingId;
  • FirstOrDefault() 导致它。 Guid 的默认值是一个空的 guid。您的查询预计至少返回一条记录,但它根本没有可以返回的记录,因此它是默认的。这实际上是你要求它做的。

标签: c# entity


【解决方案1】:

您可以通过转换为Guid? 来选择它:

mappedTypes.Where(x => x.ReferenceId == new Guid("1a087b71-638c-4f3c-b1cf-3b0438c181c0"))
           .Select(x => (Guid?) x.MappingId)
           .FirstOrDefault();

另请参阅: Nullable types (C# Programming Guide)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多