如果声明在foreach上

时间:2010-01-29 22:23:15

标签: c# .net linq

我注意到我做了很多这种模式。有没有更好的方法来写这个?

            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中的某些内容可以提供帮助吗?

4 个答案:

答案 0 :(得分:13)

例如:

if (tags.Contains(sz)) ...

对于更普遍的问题:

if (tags.Any(tag => InvolvedLogic(tag))) ...

答案 1 :(得分:8)

假设tagsList<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)
{
   //...
}