首页 新闻 会员 周边 捐助

关于LINQ 的问题

0
悬赏园豆:80 [已关闭问题] 关闭于 2014-08-08 15:38

请问各位高手,如下的T-SQL语句用Linq如何写??

 

SELECT * FROM  CopperPrices  where  ID in (select max(ID) as ID from copperprices group by market,pname)

viming的主页 viming | 初学一级 | 园豆:7
提问于:2012-07-12 15:13
< >
分享
所有回答(3)
2
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等类型。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-12 15:36

大哥,你這個不行呀!!

支持(0) 反对(0) viming | 园豆:7 (初学一级) | 2012-07-13 11:19

@viming: 说清楚点,什么叫“不行”,是报错,还是结果不对,还是不能编译。如果是结果不对,你期望的结果是什么。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-13 11:42

@水牛刀刀: 是报错了!应该是结果不对导致报错!报如下错误: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

支持(0) 反对(0) viming | 园豆:7 (初学一级) | 2012-07-18 09:46

@viming: 你用FirstOrDefault()试过没?

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-18 11:09
0

from c in dn.CopperPrices where c.ID in (select max(ID) select c  group by market,pname;

后面group by不知道有没有错,前面应该是对的.昨天才第一次接触Linq,见笑了,呵呵

幸福至上 | 园豆:20 (初学一级) | 2012-07-12 18:20
0

VS2008 或者 VS2010 "帮助"-->"示例"-->"从本地 Samples 文件夹中选择 包含您要打开 的示例的 .zip 文件。 " 的链接上就可以打开一个文件夹,里面有一个 CSharpSamples.zip 的压缩包, 这个压缩包中有很多例子,其中就有linq 的例子,很不错,看看练一练 就会了

MengXQ | 园豆:181 (初学一级) | 2012-07-13 22:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册