将GUID与LINQ中的字符串进行比较会导致错误

Mat*_*ete 5 c# linq

编辑,这不是重复.建议的SO链接要我打电话,ToString()但我正在运行.COUNT()并试图做一个大于比较,所以呼叫ToString()不是一个正确的答案.

我试图使用IF快捷方式填充变量,但是当我运行它时,我得到了错误

LINQ to Entities无法识别方法'System.Guid Parse(System.String)'方法,并且此方法无法转换为存储表达式.

我正在运行的代码是

IsAdmin = (db.yaf_prov_RoleMembership
             .Where(rm => rm.UserID == UserKey
                          && rm.RoleID == Guid.Parse("adsfasd654asdf816asdf"))
             .Count() > 0) ? true : false;
Run Code Online (Sandbox Code Playgroud)

如果我带走Guid.Parse并进行直接比较,那么我得到了错误

Operator ==不能应用于System.Guid和String类型的操作数

为了将GUID与LINQ查询中的字符串进行比较,需要做些什么?

Ser*_*kiy 16

不知道为什么Dave删除了他的答案 - 你应该只是将字符串解析移出商店表达式.否则,Entity Framework会尝试将Guid.Parse方法调用转换为SQL,并且无法执行此操作:

var adminRoleID = Guid.Parse("adsfasd654asdf816asdf");
Run Code Online (Sandbox Code Playgroud)

还用于Queryable.Any简化查询:

IsAdmin = db.yaf_prov_RoleMembership
            .Any(rm => rm.UserID == UserKey && rm.RoleID == adminRoleID);
Run Code Online (Sandbox Code Playgroud)