如何解决如何将 else if 条件应用到 LINQ 查询中?
我有一个主题列表“subjectList”我想根据两个条件获取值,例如如果 subjectValue!=null 然后选择 subjectValue 否则如果主题是 isDefault=true 然后选择 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 条件。
提前致谢。
更新: 输出应与以下查询的操作相同:
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());
}
是否可以将两个查询合并为一个查询以获得预期的输出。
解决方法
试试这个,它已经在 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,};
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 "";
}));
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。