2

当我使用 LINQ to Entities 和 Distinct 来获取唯一的 Guid 时,我得到了所有的 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?

4

1 回答 1

3

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

如果将该ToString()方法应用于 Guid 以使查询返回 anIQueryable<string>而不是 an IQueryable<Guid>,您是否仍会返回所有 4 个 guid?

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

  var distinctGuids = contactsQuery.Distinct();
于 2013-04-19T10:02:25.083 回答