C#Linq包含,分组依据和顺序

时间:2017-06-26 08:04:49

标签: c# linq

在我的程序中,我有一个搜索方法。 我有两个版本:

  1. 第一个版本,我正常地在我的数据库中搜索带有图号的图纸。
  2. 第二个版本是普通搜索加上在数据库中仅查找具有此绘图编号的最新对象的函数。
  3. 对于这两个选项,我使用的是CONTAINS方法。

    对于普通搜索,它运行良好,但在最新搜索中,它与GROUP BYORDER BY结合使用,我觉得有很多对象丢失。
    我在使用整个绘图编号时检查过,因此CONTAINS不需要工作。

    因此,例如当我为绘图编号写100并使用普通搜索时,它会找到所有具有100的对象 - 多数民众赞成。
    然而,当我搜索只有100的最新对象时,它只找到了几个。

    当我使用整数进行搜索时,它会找到正确数字的最新对象。
    因此,如果使用CONTAINS所有的排序和订单,或者我只是遗漏了某些东西,那么它是不是很糟糕?

    为了更好地理解,绘图编号可以有不同的扩展和doktypes。 Dok_Count是我要查找的最新文档的计数。

     var query =
                            from z in context.zeichnungs
                            where (zeichnungsnummer == "" || z.Zeichnungsnummer.Contains(zeichnungsnummer)) &&
                            (index == "" || index == z.Index) &&
                            (artikelbezeichnung == "" || artikelbezeichnung == z.Artikelbezeichnung) &&
                            (status == "" || status == z.Status) && (mmsSachmerkmal == "" || mmsSachmerkmal == z.MMS_Sachmerkmal) &&
                            (doktyp == "" || doktyp == z.Dokumententyp) && (dateiendung == "" || dateiendung == z.Dateiendung) &&
                            (z.Datum >= startDate.Date && z.Datum <= endDate.Date) && (status == "" || status == z.Status)
                            select z;
                            var sortQuery = query.GroupBy(x => new { x.Dokumententyp, x.Dateiendung }).Select(g => g.OrderByDescending(record => record.Dok_Count).FirstOrDefault());
    

2 个答案:

答案 0 :(得分:0)

你正在尝试使用linq进行数据库正常工作,这不是pourpose,使用视图,感谢投票。

答案 1 :(得分:-1)

我认为数据服务器的性能优于.net类。现在,我想,你可以做一个sql配置文件(或跟踪)来捕获进程向数据库询问的命令是什么,你会看到包含它在方法中的位置,在我看来,如果你有另一种方式这样做,就像加入数据库一样,会更好。另一方面,如果返回此查询的记录数量永远不会低于1000,那么无论如何,这是一个好方法。

对不起我的英文:D