簡體   English   中英

如果在Lambda C#中為null,則為默認值

[英]Default value if null in lambda C#

我正在嘗試使用lambda表達式加入三個表。 如果兩個表必須相互匹配,則下面的代碼有效,但是如果存在與其他表不對應的記錄,則返回錯誤。 Object reference not set to an instance of an object.

using (WeeklyCreditEntities WCE = new WeeklyCreditEntities())
        {
            var xx = Raw.GroupJoin(WCE.tblCHRIS,
                                a => a.CHRISID,
                                b => b.CHRISID,
                                (a, b) => new
                                {
                                    raw = a,
                                    chris = b.DefaultIfEmpty().FirstOrDefault()
                                }).Select(x => new
                                {
                                    RawEMpid = x.raw.EmployeeID,
                                    CHRISEmpID = x.chris.EmployeeID,
                                    RawCHRISID = x.raw.CHRISID,
                                    RawFullname = x.raw.Fullname,
                                    RawAmount = x.raw.Amount,
                                    chrisBank = x.chris.BankAccount
                                }).ToList();

您可以將安全導航運算符與null-coalescing運算符一起使用:

using (WeeklyCreditEntities WCE = new WeeklyCreditEntities())
{
    var xx = Raw.GroupJoin(WCE.tblCHRIS,
        a => a.CHRISID,
        b => b.CHRISID,
        (a, b) => new
        {
            raw = a,
            chris = b.DefaultIfEmpty().FirstOrDefault()
        }).Select(x => new
        {
        RawEMpid = x.raw?.EmployeeID ?? defaultValue,
        CHRISEmpID = x.chris?.EmployeeID ?? defaultValue,
        RawCHRISID = x.raw?.CHRISID ?? defaultValue,
        RawFullname = x.raw?.Fullname ?? defaultValue,
        RawAmount = x.raw?.Amount ?? defaultValue,
        chrisBank = x.chris?.BankAccount ?? defaultValue
        }).ToList();

或者,如果您使用的是C#/ Visual Studio的舊版本,則可以使用三元運算符:

using (WeeklyCreditEntities WCE = new WeeklyCreditEntities())
{
    var xx = Raw.GroupJoin(WCE.tblCHRIS,
        a => a.CHRISID,
        b => b.CHRISID,
        (a, b) => new
        {
            raw = a,
            chris = b.DefaultIfEmpty().FirstOrDefault()
        }).Select(x => new
        {
        RawEMpid = x.raw != null? x.raw.EmployeeID : defaultValue,
        CHRISEmpID = x.chris != null? x.chris.EmployeeID : defaultValue,
        RawCHRISID = x.raw != null? x.raw.CHRISID : defaultValue,
        RawFullname = x.raw != null? x.raw.Fullname : defaultValue,
        RawAmount = x.raw != null? x.raw.Amount : defaultValue,
        chrisBank = x.chris != null?x.chris.BankAccount : defaultValue
        }).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM