C# 在lambda中返回三值
我有一个C# 在lambda中返回三值,c#,lambda,ternary-operator,C#,Lambda,Ternary Operator,我有一个Func,我想分配给属性 我想检查列表中是否有任何内容,如果有,我想在开始处插入一项,然后返回列表 如果没有,我只想返回一个列表 看来我可以这样做: Errors = new Func<IList<string>>(() => { if (errors.Any()) { errors.Insert(0
Func
,我想分配给属性
我想检查列表中是否有任何内容,如果有,我想在开始处插入一项,然后返回列表
如果没有,我只想返回一个列表
看来我可以这样做:
Errors = new Func<IList<string>>(() =>
{
if (errors.Any())
{
errors.Insert(0, $"{tp.Name}");
return errors;
}
else
{
return null;
}
})(),
Errors=newfunc(()=>
{
if(errors.Any())
{
错误。插入(0,$“{tp.Name}”);
返回错误;
}
其他的
{
返回null;
}
})(),
有没有一种方法可以用三元组来实现这一点?还是更整洁的方式?对于三元数组,我不能执行类似于List.Insert(t)
的操作,因为它返回的是void而不是List
干杯你可以写一封信
当然,如果标准库中有一个更多的,您就可以编写一个
当然,如果标准库有一个更大的就好了。你是对的,在列表中插入一个项目会返回void,而不是列表。您可以做的是返回一个新列表:
var existinglist = new List<string> { "three", "one", "five" };
var condition = true;
var resultList = condition ? new[] { "owl" }.Concat(existinglist).ToList() : existinglist;
var existinglist=新列表{“三”、“一”、“五”};
var条件=真;
var resultList=条件?new[]{“owl”}.Concat(existinglist).ToList():existinglist;
你说得对,在列表中插入项目会返回void,而不是列表。您可以做的是返回一个新列表:
var existinglist = new List<string> { "three", "one", "five" };
var condition = true;
var resultList = condition ? new[] { "owl" }.Concat(existinglist).ToList() : existinglist;
var existinglist=新列表{“三”、“一”、“五”};
var条件=真;
var resultList=条件?new[]{“owl”}.Concat(existinglist).ToList():existinglist;
var existinglist = new List<string> { "three", "one", "five" };
var condition = true;
var resultList = condition ? new[] { "owl" }.Concat(existinglist).ToList() : existinglist;