Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从多个表中选择MAX_C#_.net_Linq To Sql - Fatal编程技术网

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:我没说这会更简单更简单。只是给出了另一种方法。您是否希望查询工作正常,然后当表增长时,只需要运行很长时间?