簡體   English   中英

如何將 else if 條件應用到 LINQ 查詢中。?

[英]How to apply the else if condition into the LINQ query.?

我有一個主題“subjectList”的列表,我想根據兩個條件獲取值,例如如果 subjectValue,=null 然后 select subjectValue 否則如果主題是 isDefault=true 然后 select subjectDefaultCode。 我已經為這兩個條件編寫了一個單獨的 LINQ 查詢,但我沒有得到如何在單個查詢中應用這兩個條件? 看一看。

string subjectValueDropDown = string.Empty;

第一個條件。

subjectValueDropDown = string.Join(",", subjectList.Where(x => x.SubjectValue.= null).Select(k => k.SubjectValue);ToArray());

第二個條件。

subjectValueDropDown = string.Join(",", subjectList.Where(x => x.IsDefault == true).Select(k => k.subjectDefaultCode).ToArray());

可能性:

Subject1 SubjectValue=null , isDefault=false
Subject2 SubjectValue=Maths , isDefault=false
Subject3 SubjectValue=null , isDefault=true
Subject4 SubjectValue=null , isDefault=false

在這種情況或其他任何主題具有 SubjectValue.=null 的情況下,我不希望執行 isDefault 條件。

提前致謝。

更新: Output 應與以下查詢的操作相同:

subjectValueDropDown = string.Join(",", subjectList.Where(x => x.SubjectValue != null).Select(k => k.SubjectValue).ToArray());
if(subjectValueDropDown==""){
    subjectValueDropDown = string.Join(",", subjectList.Where(x => x.IsDefault == true).Select(k => k.subjectDefaultCode).ToArray());
}

是否可以將兩個查詢合並到一個查詢中以獲得預期的 output。

試試這個,它在 Visual Studio 中測試過,值與更新中的值相同:

subjectValueDropDown = string.Join(",", 
subjectList
.Where(x =>
                (x.SubjectValue != null)
                || (x.SubjectValue == null && x.IsDefault)
    
    ).Select(k =>
       k.SubjectValue != null? k.SubjectValue : k.SubjectDefaultCode
      )
      .OfType<string>()
  .ToArray());

using System.Collections.Generic;
using System.Linq;

namespace Game
{
    class Subject
    {
        public string SubjectValue { get; set; }
        public bool IsDefault { get; set; }
        public string subjectDefaultCode = "Defauult code.";
    }

    class Program
    {   
        static void Main(string[] args)
        {
            var subjectList = new List<Subject>
            {
                new Subject
                {                    
                    IsDefault = false,
                },
                new Subject
                {
                    SubjectValue = "Maths",
                    IsDefault = false,
                },
                new Subject
                {
                    IsDefault = false,
                },
                new Subject
                {
                    IsDefault = false,
                },
            }; 

            var ubjectValueDropDown = string.Join(",", subjectList.Where(x => x.SubjectValue is not null || x.IsDefault)
                .Select(x => 
                {
                    if (x.SubjectValue is not null)
                        return x.SubjectValue;
                    
                    if (x.IsDefault)
                        return x.subjectDefaultCode;

                    return "";
                }));     
        }
    }
}

暫無
暫無

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

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