C# 从多个表中选择MAX
我有四个表,每个表都有一个日期列。我正在尝试获取这四个日期列的最大日期C# 从多个表中选择MAX,c#,.net,linq-to-sql,C#,.net,Linq To Sql,我有四个表,每个表都有一个日期列。我正在尝试获取这四个日期列的最大日期 DateTime maxDate = ((from stockIn in db.StockIns select stockIn.StockInDate) .Union(from stockOut in db.StockOuts select stockOut.StockOutDate) .Union(from stockC in db.StockClearances select stockC.StockCleara
DateTime maxDate = ((from stockIn in db.StockIns select stockIn.StockInDate)
.Union(from stockOut in db.StockOuts select stockOut.StockOutDate)
.Union(from stockC in db.StockClearances select stockC.StockClearanceDate)
.Union(from stockR in db.StockRejections select stockR.StockRejectionDate))
.Max().Value;
这是最简单的方法吗
提前感谢如果你的数据就是这样存储的,那就简单多了 如果你的数据就是这样存储的,那就简单多了 理想情况下,您可以将所有库存存储在一个表中,并与其他表建立链接,以说明库存是入库、出库、清仓还是拒收。然后你只需在一张表上做一个最大值即可。理想情况下,你可以将你的库存全部存储在一张表中,并与其他表建立链接,以说明其是入库、出库、清仓还是拒收。然后您可以简单地在一个表上执行MAX。对于这个问题,我不会使用
UNION
,因为查询的性能可能很差。合并4个表,然后进行排序(以获得最大值)对于大表来说可能非常慢
从4个查询中获取4个MaxDate并在应用程序中找到最大值,或者使用4个子查询获取这4个MaxDate,然后在时使用(SQL语法)大小写,或者使用这些结果的联合(只有4行)和max()
不知道如何将SQL转换为Linq到SQL
..我不会使用UNION
解决这个问题,因为查询的性能可能很差。合并4个表,然后进行排序(以获得最大值)对于大表来说可能非常慢
从4个查询中获取4个MaxDate并在应用程序中找到最大值,或者使用4个子查询获取这4个MaxDate,然后在
时使用(SQL语法)大小写,或者使用这些结果的联合(只有4行)和max()
不知道如何将SQL转换为Linq到SQL
..只需将.Union
替换为.Concat
就可以缓解任何性能问题,因为这会转换为Union ALL
@ypercube:但在代码方面会更加繁琐,比较空值也会更多。也就是说,想象一下,如果两列给出null作为最大值,那么在这种情况下,这些值不能添加到我们再次需要MAX的最终列表中。@Tim Rogers:但是Concat函数将日期字符串合并。那我们怎么才能找到集中值上的最大值呢???@Marshal方法。@Marshal:我没说这会更简单更简单。只是给出了另一种方法。您是否希望查询工作正常,然后当表增长时,运行起来只需要很长时间?只需将.Union
替换为.Concat
就可以缓解任何性能问题,因为这会转化为Union ALL
@ypercube:但在代码方面会更加繁琐,比较空值也会更多。也就是说,想象一下,如果两列给出null作为最大值,那么在这种情况下,这些值不能添加到我们再次需要MAX的最终列表中。@Tim Rogers:但是Concat函数将日期字符串合并。那我们怎么才能找到集中值上的最大值呢???@Marshal方法。@Marshal:我没说这会更简单更简单。只是给出了另一种方法。您是否希望查询工作正常,然后当表增长时,只需要运行很长时间?