当我点击以下行时,无论"本地"是否出现在连接Roles表中,我总是收到一个真值.
if (objUserRoles.Select(x => (x.Role.Role1 == "local")).Count() > 0)
Run Code Online (Sandbox Code Playgroud)
我的语法是否正确?
Tim*_* S. 10
您正在寻找:
if (objUserRoles.Any(x => x.Role.Role1 == "local"))
Run Code Online (Sandbox Code Playgroud)
你正在做的是选择一系列的bools.例如,如果您的查询返回了3个项目false, true, false,那么您要求该false, true, false序列的表达式,而不仅仅是它所在位置的对象.看起来你正在尝试选择那一系列bool为真的值,这意味着你应该使用Where而不是Select.但是,既然你真的只是在做这件事Where而且Count正在检查至少一个,你应该这样做Any,这样做会更有效率.
你需要的是Where:
if (objUserRoles.Where(x => x.Role.Role1 == "local").Count() > 0)
Run Code Online (Sandbox Code Playgroud)
或者Any它甚至更好(并且性能更好,因为在大多数情况下它不会像整个集合那样迭代Count())
if (objUserRoles.Any(x => x.Role.Role1 == "local"))
Run Code Online (Sandbox Code Playgroud)