c# – 当SingleOrDefault返回null时,LINQ新实例

前端之家收集整理的这篇文章主要介绍了c# – 当SingleOrDefault返回null时,LINQ新实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
另一个快速的问题.
我有这个简单的方法
#region Fields

    private Collection<Address> _addresses;

    #endregion

    #region Public methods

    public Address DeliveryAddress()
    {
        if (_addresses == null)
            if (this.Id > 0)
                _addresses = Core.Data.Addresses.GetClient(this.Id);

        return _addresses.SingleOrDefault(x => x.TypeId == AddressType.Delivery);
    }

    public Address InvoiceAddress()
    {
        if (_addresses == null)
            if (this.Id > 0)
                _addresses = Core.Data.Addresses.GetClient(this.Id);

        return _addresses.SingleOrDefault(x => x.TypeId == AddressType.Invoice);
    }

    #endregion

正如你所看到的,我试图返回一个DeliveryAddress的结果和一个InvoiceAddress的结果.我的问题是,如果SingleOrDefault返回null,我希望链接表达式创建一个新的Address()实例.
我对linq真的很新,所以我不知道SingleOrDefault是否是正确的表达式我应该使用.

解决方法

您可以使用 DefaultIfEmpty并将该实例用作默认值:
return _addresses.Where(x => x.TypeId == AddressType.Delivery)
                 .DefaultIfEmpty(new Adress())
                 .Single();

猜你在找的C#相关文章