如何对GUID和LINQ进行不区分大小写的比较?

Den*_*ail 15 .net c# linq asp.net-membership .net-4.0

在下面的代码中,我想比较两个GUID.问题是我没有返回任何任务,因为GUIDS是不同的情况(大写与小写).我需要执行不区分大小写的比较.

MembershipUser membershipUser = Membership.GetUser();
string strUserId = membershipUser.ProviderUserKey.ToString();

Guid userId = new Guid(strUserId.ToUpper());

lblUserId.Text = userId.ToString();

DataModelEntities dc = new DataModelEntities();

var userTasks = dc.tasks.Where(t => t.user_id == userId).ToList();
Run Code Online (Sandbox Code Playgroud)

如何比较GUID并查找匹配,无论大小写?

更新1现在将GUID从成员资格提供者转换为GUID

Guid userId = (Guid) membershipUser.ProviderUserKey;
Run Code Online (Sandbox Code Playgroud)

我仍然没有得到任何比赛.

Aar*_*ide 34

= Gu在Guid上重载,因此您不需要比较字符串表示.

请参阅http://msdn.microsoft.com/en-us/library/system.guid.op_equality(v=VS.90).aspx

  • 该文档没有明确说明比较会处理这种情况。它有这样的作用吗?我们如何确定? (3认同)
  • [Guid Operators](https://msdn.microsoft.com/en-us/library/ff986404(v=vs.110).aspx) 确实支持 `==` 和 `!=` (2认同)

Mar*_*wul 22

不确定为什么要将它们作为文本进行比较,而不是t.user_id == userId使用它们t.userId.Equals(userId, StringComparison.OrdinalIgnoreCase)

  • 注意,equals要求userID为非null.使用StringComparer.OrdinalIgnoreCase.Equals(str1,str2) (4认同)