请帮我。 我尝试。凡()查询方法比较两个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);
请帮我。 我尝试。凡()查询方法比较两个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);
与 :
u.FriendID.CompareTo(startUser) > 0
?
我知道这是一个老问题,但我以前看过这个数据的情况下,它可能是相关的人的未来。 在这里你出于某种原因对唯一标识符聚集你的表(物理组织,默认与主键),这可能是相关的。 如果您需要批量读取或网页的表格,你可以用阅读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);
它没有意义的应用大于或小于一个GUID。
0f8fad5b-d9cb-469f-a165-70867728950e
和7c9e6679-7425-40de-944b-e07fc1f90ae7
两个的GUID但是这是更大? 你放下 - 和计算总的HEX的? 或者怎么样添加HEX的总和之间 - ?
它只是简单地没有这样做(尽管它可能是)
应用逻辑==和!=但是没有任何意义,但。 的GUID结构不超载==和!=操作符,所以使用它们,你也可以很容易地比较两个字符串值,即
var isEqual = guid.ToString().Equals(otherGuid.ToString());