【发布时间】:2020-04-16 19:29:11
【问题描述】:
我是 C# 新手,我想写一个扩展方法,我可以在 IList 上执行并通过我的标签过滤它。
我写了这样的方法
public static IList<string> FilterByTag(this IList<string> input, params string[] tags)
{
return input.Where(tmp => { <--- This line error
foreach (var tag in tags)
{
if (tmp.Contains(tag))
{
return true;
}
return false;
}
});
}
在那一行(上图)中,就在=> 我收到一条消息:“并非所有路径都在 lambda 中返回值...
我做错了什么?
更新
在 Anu Viswan 回复后编辑
public static IList<string> FilterByTag(this IList<string> input, params string[] tags)
{
return input.Where(tmp => {
bool result = true;
foreach (var tag in tags)
{
if (tmp.Contains(tag))
{
result = true;
}
result = false;
}
return result;
});
}
【问题讨论】:
-
您肯定不是说
return false;语句位于 foreach 循环中。这将防止它循环。并产生错误信息。给 C# 团队买一支雪茄;)
标签: c#