gpt4 book ai didi

c# - 可空类型和 .HasValue 仍然抛出 Null 异常

转载 作者:行者123 更新时间:2023-11-30 19:37:20 25 4
gpt4 key购买 nike

我有一个类描述存储的各种电话。有时 Importance 属性可以为 null。这是类

public class PhoneTypeListInfo
{
public string AccountNum { get; set; }
public int PhoneType { get; set; }
public string PhoneNum { get; set; }

public int Importance { get; set; }
}

我已经定义了一个函数,如果电话号码和帐号匹配一组给定的值,它将返回一个 PhoneTypeListInfo

    protected PhoneTypeListInfo RetrievePhoneType(string info, string acctNumber)
{
PhoneTypeListInfo type = xPhoneTypeList.Where(p => p.PhoneNum == info && p.AccountNum == acctNumber).FirstOrDefault();

return type;
}

这一切都很好。我遇到的问题是下面的 linq 查询。

List<AlertBasedPhones> xAccountPhones = new List<AlertBasedPhones>();
xAccountPhones = (from x in xAccountStuff
where x.Media == "Phone"
let p = RetrievePhoneType(x.Info, acct.AccountNumber)
let xyz = x.Importance = (p.Importance as int?).HasValue ? p.Importance : 0
orderby p.Importance descending
select x).ToList();

我在上面所做的是尝试使用具有不同组成的不同类,除了从 PhoneTypeListInfo 获取“Importance”属性。

我的问题最终是,我需要做什么才能让p.Importance为空,如果为空则设置为0,使x.Importance 0 也是如此。

最佳答案

不是 p.Importannce 为 null,而是 p 本身。这是您需要首先检查 null 的事情。如果您使用的是 C# 6,则可以使用 ?. 运算符。您还可以简化 (p.Importance as int?).HasValue 的逻辑? p.Importance:0p.Importance ?? 0。结合你得到的

List<AlertBasedPhones> xAccountPhones = new List<AlertBasedPhones>();
xAccountPhones = (from x in xAccountStuff
where x.Media == "Phone"
let p = RetrievePhoneType(x.Info, acct.AccountNumber)
let xyz = x.Importance = p?.Importance ?? 0
orderby p?.Importance descending
select x).ToList();

关于c# - 可空类型和 .HasValue 仍然抛出 Null 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355574/

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