![](/img/trans.png)
[英]how to select records from multiple table with max count value from one table using Linq in Asp.net MVC C#
[英]How to select the max date from table in c# linq query
我在这里堆栈我需要有人帮助。 我想从不同的表中获取最大日期,其中 Refno 等于 Refno。 我当前的代码给出了 actionrecords 表中存在的所有日期。
我当前的代码看起来像
public IQueryable<EmployerDetails> _employerProfileOverview(string refNo, string organisationname, string tradingname)
{
var query = (from _employerdetails in _entities.Organisations
join _lasttransaction in _entities.LevyTransactions on _employerdetails.Refno equals _lasttransaction.Refno
select new EmployerDetails
{
RefNo = _employerdetails.Refno,
Surname = _employerdetails.Surname,
TradingName = _employerdetails.TradingName,
Status = _employerdetails.Status,
TransactionDate = _lasttransaction.TransactionDate
});
if (string.IsNullOrEmpty(refNo).Equals(false))
query = query.Where(x => x.RefNo.Contains(refNo.Trim()));
if (string.IsNullOrEmpty(organisationname).Equals(false))
query = query.Where(x => x.Surname.Contains(organisationname.Trim()));
if (string.IsNullOrEmpty(tradingname).Equals(false))
query = query.Where(x => x.TradingName.Contains(tradingname.Trim()));
return query;
}
我的输出看起来像这样
Refno TradingName Status TransactionDate
L940732953 PSG KONSULT BPK LICHTENBURG A 2011-01-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-03-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-04-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-05-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-06-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-07-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-08-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-09-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-10-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-11-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2012-12-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-01-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-02-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-03-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-04-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-05-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-05-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-06-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-11-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2013-12-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-01-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-02-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-03-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-04-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-05-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-06-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-07-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-08-01 00:00:00.00
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-09-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-10-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-11-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2014-12-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2015-01-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2015-02-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2015-03-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2015-04-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2015-05-01 00:00:00.000
L940732953 PSG KONSULT BPK LICHTENBURG A 2015-06-01 00:00:00.000
L940733035 BROUGHTON AND JONCK A 2011-05-01 00:00:00.000
L940733035 BROUGHTON AND JONCK A 2011-05-01 00:00:00.000
L940733035 BROUGHTON AND JONCK A 2011-05-01 00:00:00.000
L940733035 BROUGHTON AND JONCK A 2011-05-01 00:00:00.000
L940733035 BROUGHTON AND JONCK A 2011-05-01 00:00:00.000
L940733035 BROUGHTON AND JONCK A 2011-05-01 00:00:00.000
L940736574 COVERS FOODS CC Y 2011-03-01 00:00:00.000
L940736574 COVERS FOODS CC Y 2011-03-01 00:00:00.000
L940736574 COVERS FOODS CC Y 2011-05-01 00:00:00.000
L940736574 COVERS FOODS CC Y 2011-05-01 00:00:00.000
L940738141 TEAMWORX SHOPFITTERS (PTY) LTD A 2011-01-01 00:00:00.000
L940738141 TEAMWORX SHOPFITTERS (PTY) LTD A 2011-02-01 00:00:00.000
L940738141 TEAMWORX SHOPFITTERS (PTY) LTD A 2011-02-01 00:00:00.000
L940738141 TEAMWORX SHOPFITTERS (PTY) LTD A 2011-04-01 00:00:00.000
L940738141 TEAMWORX SHOPFITTERS (PTY) LTD A 2011-05-01 00:00:00.000
我只想显示每个 Refno 的 max(Transaction) 。
请帮帮我。
您需要在此处使用group by
并使用Max扩展方法来查找最大交易日期:-
var query = (from _employerdetails in _entities.Organisations
join _lasttransaction in _entities.LevyTransactions
on _employerdetails.Refno equals _lasttransaction.Refno
group new { _employerdetails, _lasttransaction }
by new { _employerdetails.Refno,
_employerdetails.Surname_employerdetails.TradingName,
_employerdetails.Status } into g
select new EmployerDetails
{
RefNo = g.Key.RefNo ,
Surname = g.Key.Surname,
TradingName = g.Key.TradingName,
Status = g.Key.Status,
TransactionDate = g.Max(x => x._lasttransaction .TransactionDate)
});
另外,作为一个旁注,因为String.IsNullOrEmpty返回布尔值,不需要将它与false
或true
进行比较。 您可以直接执行此操作:-
if (!string.IsNullOrEmpty(refNo))
query = query.Where(x => x.RefNo.Contains(refNo.Trim()));
您可以在 return 语句之前添加以下行:
query = query.OrderByDescending(q => q.TransactionDate).First();
另一种选择是在MoreLinq 中使用 Max by 属性函数,这将使代码更加优雅。
另外,你应该写:
if (!string.IsNullOrEmpty(refNo))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.