c# - LINQ to Entities 查询和 GUID 区分

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

当我使用 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?

最佳答案

首先,我假设申请 Distinct()使用 contactQuery 而不是 Query 只是准备发布代码时的一个失误。

如果您应用 ToString()方法到 Guid,以便查询返回 IQueryable<string>而不是IQueryable<Guid> ,你还能得到所有 4 个指南吗?

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

  var distinctGuids = contactsQuery.Distinct();

关于c# - LINQ to Entities 查询和 GUID 区分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102047/

相关文章:

c# - 从 PropertyInfo 创建表达式

c# - 在 Include 语句中使用 Where 子句的 Linq 查询

c# - 根据谓词拆分字符串

c# - 检索满足选定条件的数据的最佳实践

c# - 拦截 AWS Lambda 对 AWS Lex 查询的响应

C#/NHibernate 有注释吗?

c# - 按顺序执行多个异步方法调用

.net - 如何获得更多 RDBMS 功能但仍使用 SQLite?

c# - EF 6.1 中的 LINQ 查询自定义对象最佳实践

.net - 工具条覆盖控件