繁体   English   中英

Linq SQL 和 Select MAX 子查询

[英]Linq SQL with Select MAX Sub Query

我有以下 SQL 查询,它有一个子查询,因此结果集中只有最大值:

Select 
t.ID,
r.ResultIdentifier,
p.ProductID,
r.Status,
r.Start
from Result r , Transact t, Product p
WHERE r.ResultIdentifier =  (Select MAX(r2.ResultIdentifier) from Result r2 
                            where r2.Status = 'Fail'
                            and r2.ID = r.ID
                            and r2.Start >= getdate() - 30)

and r.ID = t.ID
and p.productID = 9
and t.productID = p.productID

我正在尝试将其转换为 LINQ 查询

var failures = from result in db.Results
               join transact in db.Transacts on result.ID equals transact.ID
               join product in db.Products on transact.ProductID equals product.ProductID
               where result.ResultIdentifier == ??
               .....
               select new{ ID = transact.ID,
               ...etc

我真的在努力解决 LINQ 中的最大 ResultIdentifier - 尝试了 .MAX() 的多种变体,但似乎无法正确处理。欢迎提出任何建议。

您可以使用 max 关键字,很抱歉使用方法语法,因为我可以看到您正在使用查询:(

应该看起来像下面这样

where result.ResultIdentifier == (Results.Max().Where(x => x.Status.equals("Fail") && x.id == result.id && x.start => Datetime.Now().Add(-30)).Select(x => x.ResultIdentifier))

尝试以下查询:

var results = db.Results;
var failedResults = results
    .Where(r => r.Status == "Fail" && r.Start >= DataTime.Date.AddDays(-30));

var failures = 
    from result in results
    join transact in db.Transacts on result.ID equals transact.ID
    join product in db.Products on transact.ProductID equals product.ProductID
    from failed in failedResults
        .Where(failed => failed.ID == result.ID)
        .OrderByDescending(failed => failed.ResultIdentifier)
        .Take(1)
    where result.ResultIdentifier == failed.ResultIdentifier
    .....
    select new{ ID = transact.ID,
    ...etc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM