LINQ to Entities查询和GUID上的区别

时间:2013-04-19 10:00:37

标签: c# .net linq linq-to-entities

当我使用LINQ to Entities然后使用Distinct来获取独特的Guids时,我将获得所有GUID。

DB-Entry 1: {b3f86f18-f661-4511-a8b5-f85aa8e41b29}
DB-Entry 2: {b3f86f18-f661-4511-a8b5-f85aa8e41b29}
DB-Entry 3: {7078d941-0906-4a1b-9a27-85cfc9cf382b}
DB-Entry 4: {7387d57e-6ac5-4b3b-b7f5-833383530bb6}
using (OrderTableEntities msgcontext = new OrderTableEntities())
{
    try
    {
        var Query = from c in msgcontext.tbl_Order
                    select c.OrderGuid;

        var distinctGuids = Query.Distinct();
    }
    catch 
    {
    }
}

执行此代码部分后,将查询所有4行。基本上我本来期望得到的 3个参赛作品。什么可能导致这个问题,不可能得到DISTINCT Guid?

1 个答案:

答案 0 :(得分:3)

首先,我假设在准备发布代码时,将Distinct()应用于contactsQuery而不是Query只是一个漏洞。

如果您将ToString()方法应用于Guids,以便查询返回IQueryable<string>而不是IQueryable<Guid>,那么您是否还会返回所有4个guid?

var contactsQuery = from c in msgcontext.tbl_Order select c.OrderGuid.ToString();

  var distinctGuids = contactsQuery.Distinct();