我有以下查询,需要写为LINQ
select * from sales s
where area in ('f1','f2','f3') and sdate =(select max(sdate) from sales ss where ss.area= s.area)
我对最长日期感到困惑。
我当前的代码:
var maxDate = (from A in _context.sales
where inputArray.Contains(A.area)
select A.sdate)
.Max();
var Model =
(from A in _context.sales
where inputArray.Contains(A.area) && A.sdate== maxDate
select ...)
答案 0 :(得分:1)
谈论
With Worksheets("Filter")
.Range(.Cells(2, 1), .Cells(VarAnzahlZeilen, VarAnzahlSpalten)).RemoveDuplicates Columns:=Array(1), Header:=xlNo
End With
条件,或更准确地说
sdate =(select max(sdate) from sales ss where ss.area= s.area)
您可以使用几乎相同的子查询语法-仅s.sdate = (select max(ss.sdate) from sales ss where ss.area = s.area)
应该在LINQ 查询语法之外,或者只使用LINQ 方法语法 ,例如要么
Max
或
from s in _context.sales
where inputArray.Contains(s.area)
&& s.sdate == (from ss in _context.sales where ss.area == s.area select ss.sdate).Max()
答案 1 :(得分:0)
表达式x =>列表。包含(x)的内容将转换为IN sql查询
var list = new List<string>{"f1","f2","f3"};
var query = context.Sales
.Where(x => list.Contains(x.Area))
.GroupBy(x => x.Area)
.Select(x => x.OrderByDescending(y=>y.sDate).First());