var result = CopperPrices.GroupBy(p => new { Market = p.Market, PName = p.PName }) .Select(g => g.OrderByDescending(p => p.ID).First()) .ToList();
或者
var result = from p in copperPrices group p by new { Market = p.Market, PName = p.PName } into g select g.OrderByDescending(p => p.ID).First();
我这里假设Market和PName都是string/int/decimal等类型。
大哥,你這個不行呀!!
@viming: 说清楚点,什么叫“不行”,是报错,还是结果不对,还是不能编译。如果是结果不对,你期望的结果是什么。
@水牛刀刀: 是报错了!应该是结果不对导致报错!报如下错误:The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead
如我的数据表如下:
ID Market Pname Date
1 A H 07-10
2 A I 07-10
3 B H 07-10
4 A H 07-11
5 B H 07-11
ID为递增字段,我期望的结果是:以Market,Pname分组,得到每一组最新的一条记录(即每一组的中最大ID的那条记录,查询结果为:
ID Market Pname Date
2 A I 07-10
4 A H 07-11
5 B H 07-11
@viming: 你用FirstOrDefault()试过没?
from c in dn.CopperPrices where c.ID in (select max(ID) select c group by market,pname;
后面group by不知道有没有错,前面应该是对的.昨天才第一次接触Linq,见笑了,呵呵
VS2008 或者 VS2010 "帮助"-->"示例"-->"从本地 Samples 文件夹中选择 包含您要打开 的示例的 .zip 文件。 " 的链接上就可以打开一个文件夹,里面有一个 CSharpSamples.zip 的压缩包, 这个压缩包中有很多例子,其中就有linq 的例子,很不错,看看练一练 就会了