我有一个Func<IList<string>>
我要分配给一个属性。
我想检查列表中是否有任何内容,如果有,那么我想在开头插入一个项目,然后返回列表。
如果不存在,我只想返回一个列表。
我似乎可以这样做:
Errors = new Func<IList<string>>(() =>
{
if (errors.Any())
{
errors.Insert(0, $"{tp.Name}");
return errors;
}
else
{
return null;
}
})(),
有没有办法用三元组来做到这一点?还是更整洁的方式?使用三元组时,我无法执行List.Insert(T)
之类的操作,因为它返回void而不是列表。
干杯
答案 0 :(得分:0)
您可以撰写extension method。
public static class ListExtensions {
public static InsertAndReturnSelf<T>(this List<T> source, T item){
source.Insert(0, item);
return source;
}
}
然后你可以做
Errors = errors.Any() ? errors.InsertAndReturnSelf($"{testCastStep.Name}") : null;
如果标准库有更多fluent interface
,那肯定会很好答案 1 :(得分:0)
你是对的,将一个项目插入一个列表会返回void,而不是列表。您可以做的是返回一个新列表:
float:right