当同时有两列要选择时,如何将此转换为lambda表达式?
语言级集成查询

var lq=(from a in tbl
          group a by 0 into b
          select new { intYear = b.Min(p => p.intYear), tintMonth = b.Max(p => p.tintMonth) }
    ).SingleOrDefault();

T-SQL
SELECT MIN(intYear), MAX(tintMonth)
FROM tbl

lamdba表达式
tbl.Select(x => x.intYear).Min();  //Can't figure how to select if 2 columns

最佳答案

如果打算返回一个“行”而不是两个值,则可以像在第一个linq表达式中那样将所有行组合在一起:

tbl.GroupBy(t => 1)
   .Select(g => new { intYear = g.Min(p => p.intYear), tintMonth = g.Max(p => p.tintMonth) })

注意,我假设这是针对linq to sql的。对于普通的旧对象,这很可能会导致通过集合的三次迭代。一个用于分组,一个用于Min(),另一个用于Max()。对于大型集合,最好循环一次,然后用传统的方式在集合上使用一个foreach

08-26 00:44