使用linq/lambda构建一个标志

Pau*_*els 5 c# linq lambda bitmask

是否可以根据linq查询的结果建立一个位掩码; 例如:

class MyClass
{
    public int Flag{get;set;}
    public bool IsSelected {get;set;}
}

myVar = GetlistMyClass();

int myFlag = myVar.Where(a => a.IsSelected).Select(?);
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 5

您可以使用| -operator聚合所有标志,如下所示:

int myFlag = myVar.Where(a => a.IsSelected)
                  .Select(x => x.Flag) 
                  .Aggregate((current, next) => current | next);
Run Code Online (Sandbox Code Playgroud)