zoukankan      html  css  js  c++  java
  • EF写distinct

    在日常开发中常常是这么写的

     var logErrorRequest = from l in _logErrorRepository.Table
                                          select new
                                          {
                                              WrongTime = l.WrongTime,
                                              InstitutionlGuid = l.InstitutionlGuid,
                                              DataSource = l.DataSource,
                                              AccessionNumber = l.AccessionNumber,
                                              ServiceSectID = l.ExamineType,
                                              BusinessID = l.BusinessID
                                          };
                    if (query.InstitutionGuid != null)
                    {
                        logErrorRequest = logErrorRequest.Where(t => t.InstitutionlGuid == query.InstitutionGuid);
                    }
                    if (query.LastUpdateDateStart != null)
                    {
                        logErrorRequest = logErrorRequest.Where(t => t.WrongTime >= query.LastUpdateDateStart);
                    }
                    if (query.LastUpdateDateEnd != null)
                    {
                        logErrorRequest = logErrorRequest.Where(t => t.WrongTime <= query.LastUpdateDateEnd);
                    }
                    var result = logErrorRequest.Distinct();

    但是实际上想要

    Distinct的字段只有
     InstitutionlGuid,DataSource,AccessionNumber三个字段,可是如果只查询这三个的话下面的条件中的字段就会编译报错,为了只查询这三个字段并且还能使条件的字段可以使用,可以改造成如下写法:
        var logErrorRequest = from l in _logErrorRepository.Table
                                          select l;
                    //直接写所有字段,这样就可以使用条件字段
                    if (query.InstitutionGuid != null)
                    {
                        logErrorRequest = logErrorRequest.Where(t => t.InstitutionlGuid == query.InstitutionGuid);
                    }
                    if (query.LastUpdateDateStart != null)
                    {
                        logErrorRequest = logErrorRequest.Where(t => t.WrongTime >= query.LastUpdateDateStart);
                    }
                    if (query.LastUpdateDateEnd != null)
                    {
                        logErrorRequest = logErrorRequest.Where(t => t.WrongTime <= query.LastUpdateDateEnd);
                    }
                    //在distinct的时候才会去查询,所以这里就可以select需要distinct的字段,然后再查询
                    var result = logErrorRequest.Select(t=>new {t.InstitutionlGuid,t.DataSource,t.AccessionNumber }).Distinct();
     
  • 相关阅读:
    python3 crypto winrandom import error
    Flask-Babel 中文支持(zh-CN和zh-Hans-CN)
    pip 安装psycopg的错误
    Aapache status / apache2ctl status 总是403
    为什么你还在用嵌入式的方式来使用mod_wsgi?
    Git中当add错误的时候怎么办?
    Python 内置彩蛋
    本人AI知识体系导航
    本人SW知识体系导航
    SSH密钥对登录的原理和实践
  • 原文地址:https://www.cnblogs.com/llcdbk/p/7419688.html
Copyright © 2011-2022 走看看