在我的程序中,我有一个搜索方法。 我有两个版本:
对于这两个选项,我使用的是CONTAINS
方法。
对于普通搜索,它运行良好,但在最新搜索中,它与GROUP BY
和ORDER 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());
答案 0 :(得分:0)
你正在尝试使用linq进行数据库正常工作,这不是pourpose,使用视图,感谢投票。
答案 1 :(得分:-1)
我认为数据服务器的性能优于.net类。现在,我想,你可以做一个sql配置文件(或跟踪)来捕获进程向数据库询问的命令是什么,你会看到包含它在方法中的位置,在我看来,如果你有另一种方式这样做,就像加入数据库一样,会更好。另一方面,如果返回此查询的记录数量永远不会低于1000,那么无论如何,这是一个好方法。
对不起我的英文:D