当使用SingleOrDefault()查询正数列表时,如果在列表中找不到数字而不是返回null或自定义值(如-1)类型的默认值(在本例中为0)? 最佳答案 你可以使用:varfirst=theIntegers.Cast().SingleOrDefault(i=>i==theValue)??valueIfNotFound;这通过将项目转换为Nullable来实现,然后使用null-coalescingoperator如果null返回您选择的值被退回(即:未找到)。请注意,如果您有多个匹配项,则会抛出此异常。如果您不想要这种行为,请使
SingleOrDefault()方法很棒,因为如果您调用它的集合为空,它不会抛出异常。但是,有时我想要的是在不存在的情况下获取某种类型的新对象。例如,如果我可以执行以下操作,那就太好了:varclient=db.Clients.Where(c=>c.Name=="SomeClient").SingleOrNew();这样我就不必检查它是否为null,如果它是创建一个新的,我总是知道我的client对象将是我可以立即使用。有什么想法吗? 最佳答案 真的,您只想使用nullcoalescing运营商在这里。示例:varclient=d
我回答了一些问题并在谷歌上搜索了一下,但我找不到答案(这让我很满意)。基本上,我理解SingleOrDefault返回null或0(取决于类型)。但是我怎样才能让它返回其他东西呢?returnmyChannels.All.Where(_Channel=>_Channel.Guid==this.ParentChannelGuid).SingleOrDefault(_SPECIFICCHANNEL);所以,我希望返回_SPECIFICCHANNEL以防它不是单个的..可以吗? 最佳答案 你必须做一个扩展方法:publicstaticTS
我有这个简单的方法:#regionFieldsprivateCollection_addresses;#endregion#regionPublicmethodspublicAddressDeliveryAddress(){if(_addresses==null)if(this.Id>0)_addresses=Core.Data.Addresses.GetClient(this.Id);return_addresses.SingleOrDefault(x=>x.TypeId==AddressType.Delivery);}publicAddressInvoiceAddress(){if
我正在使用EntityFramework4.2(代码优先)访问我的数据库。我假设如果我使用SingleOrDefault查询一个实体,如果该实体尚未被跟踪,它只会查询数据库,但事实并非如此。另一方面,Find方法似乎确实在执行此操作。Find的问题是它似乎不允许我加载相关数据。有没有一种方法既可以使用Find方法又可以快速加载数据?例如,我想加载一本书及其所有评论://LoadbookfromthedatabaseBookbook=context.Books.Find(1);context.Entry(book).Collection.Load();//Book.Reviewsisno