비트 플래그는 이해하기 :C#에서 플래그를 비교하는 방법? (2 부)
나는 약 this 및 this 질문을 알고 난 대답을 이해하지 나는 심지어 내 좋은 친구에서이 article을 따라 조금 어렵습니다.
if (HttpContext.Current.Session["DebugSessionText"] != null)
{
showType = parDebug.Write2LogType.WARN |
parDebug.Write2LogType.ERROR |
parDebug.Write2LogType.INFO;
if (!chkInfo.Checked)
showType &= ~parDebug.Write2LogType.INFO; // remove INFOs
if (!chkError.Checked)
showType &= ~parDebug.Write2LogType.ERROR; // remove ERRORs
List<myDebugRow> list =
(List<myDebugRow>)HttpContext.Current.Session["DebugSessionText"];
gv.DataSource = list.FindAll(x => x.Type == showType));
}
gv.DataBind();
내가해야합니까 :
하지만 난 여전히 문이 안 열려도 그것을 필요 "축 폐선은"표준보다가 ...
는 난 할 노력하고있어이되는 List 객체를 필터링하면 사용자가 원하는 것을 얻을 수 있습니다 (INFO 오류 만 표시하고 예외 오류는 항상 표시되지만 WARNING 오류는 항상 표시됩니다).
이 작업을 직접 수행 할 수 있습니까 아니면 필터링해야합니다 LAMBDA 표현식을 사용하지 않고 수동으로?
도움 주셔서 감사합니다.
gv.DataSource = list.FindAll(x => 0 != (x.Type & showType)));
당신이 오른쪽 유형 showType가 정확히되고 싶지 않기 때문에
@balexandre : 아래에서 좋은 답변을 얻었습니다. 비트 연산자에 대한 자세한 내용은 http://stackoverflow.com/questions/1537713/what-is-the-second-meaning-of-a-single-ampersand-in-c/1537772#1537772 –