Guid类型和(“>”比比较大)在LINQ到SQL(Guid type and ( '

2019-07-18 04:35发布

请帮我。 我尝试。凡()查询方法比较两个GUID。 但我得到的编译错误。 错误1操作“>”不能被施加到型“的System.Guid”和“的System.Guid的操作数

Guid startUser = ////Here I get user by url id param
List<Friends> friends = Common.DataContext.Friends.Where(u => u.FriendID > startUser).Take(5);

Answer 1:

与 :

u.FriendID.CompareTo(startUser) > 0



Answer 2:

我知道这是一个老问题,但我以前看过这个数据的情况下,它可能是相关的人的未来。 在这里你出于某种原因对唯一标识符聚集你的表(物理组织,默认与主键),这可能是相关的。 如果您需要批量读取或网页的表格,你可以用阅读SQL查询结束:

SELECT TOP (@batchsize)
    *
FROM myTable
WHERE UserId > @previousBatchUserId

也就是说,一般不是一个很理想的设计,正如你所观察到不LINQ到SQL工作。 此外,什么是批处理如果你添加更多的行后,后面相同的查询将发生变化。 如果您有由一个CreatedDate(时间)列顺序,而不是会好很多。 或使用创建日期列作为第一条件,然后一个!=上的GUID检查(如果可以有一个以上的具有相同的时间戳创建)。 理想情况下,你会添加一个代理标识列(和集群就可以了),然后你可以对ID的地方比对应到你想要的GUID的一个较大的过滤。

然后,它可能看起来像:

Guid startUser = //some guid
int startUserId = Common.DataContext.Friends.Single(u => u.FriendID == startUser).Id;
List<Friends> friends = Common.DataContext.Friends.Where(u => u.Id > startUserId);


Answer 3:

它没有意义的应用大于或小于一个GUID。

0f8fad5b-d9cb-469f-a165-70867728950e7c9e6679-7425-40de-944b-e07fc1f90ae7

两个的GUID但是这是更大? 你放下 - 和计算总的HEX的? 或者怎么样添加HEX的总和之间 - ?

它只是简单地没有这样做(尽管它可能是)

应用逻辑==和!=但是没有任何意义,但。 的GUID结构不超载==和!=操作符,所以使用它们,你也可以很容易地比较两个字符串值,即

var isEqual = guid.ToString().Equals(otherGuid.ToString());



文章来源: Guid type and ( '>' greater than comparison) in LINQ to SQL