繁体   English   中英

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

[英]How do I perform a case-insensitive compare of GUIDs with LINQ?

在下面的代码中,我想比较两个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();

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

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

Guid userId = (Guid) membershipUser.ProviderUserKey;

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

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

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

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

我总是在linq语句中使用==进行guid / uniqueidentifier列比较的dillema(特别是在where子句中)所以我采用了一种相当安全的使用方法 - (entityGuidColumn.CompareTo(guidParameter)== 0)。 这对我有用。 试一试。

在进行字符串比较时忽略大小写的简单方法是在比较之前将所有内容转换为较低(或较高)的大小写。 所以:

var userTasks = dc.tasks.Where(t => t.user_id.ToString().ToLower() == userId.ToString().ToLower()).ToList();

话虽这么说,我同意其他评论者,你应该使用本机GUID比较,而不是字符串比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM