我注意到我做了很多这种模式。有没有更好的方法来写这个?
bool hit=false;
foreach (var tag in tags)
if (tag == sz)
{
hit = true;
break;
}
if (hit) continue;
//tags.add(sz); or whatever i wanted to do
我知道其他语言中存在if sz in tags
。我希望linq中的某些内容可以提供帮助吗?
答案 0 :(得分:13)
例如:
if (tags.Contains(sz)) ...
对于更普遍的问题:
if (tags.Any(tag => InvolvedLogic(tag))) ...
答案 1 :(得分:8)
假设tags
是List<T>
:
if (tags.Contains(sz))
{
// ...
}
答案 2 :(得分:2)
如果您只想知道某个项目是否在tags
,请执行:
if(tags.Any(t => t == sz))
{
// Do stuff here
}
如果您想获取对找到的项目的引用,请执行以下操作:
var foundTag = tags.FirstOrDefault(t => t == sz);
// foundTag is either the first tag matching the predicate,
// or the default value of your tag type
答案 3 :(得分:0)
if (tags.Any(t=>t == sz) == true)
{
//...
}