SELECT ClmID, MAX(CPDate) FROM tb_ClaimProcces
WHERE (CPDate > '2009-01-05')
GROUP BY ClmID
SELECT ClmID, MAX(CPDate) FROM tb_ClaimProcces
WHERE (CPDate > '2009-04-05')
GROUP BY ClmIDClmID是外键 我想查询他所对应的tb_ClaimProcces表中的近几天的记录根据ClmID进行分组然后找每组最近的一条记录
我想得到的是 list<tb_ClaimProcces>这样的集合
每个元素有ClmID, MAX(CPDate)两个属性
sql 是上面那样 但不知道用linq这么写
各路英雄帮帮忙
WHERE (CPDate > '2009-01-05')
GROUP BY ClmID
SELECT ClmID, MAX(CPDate) FROM tb_ClaimProcces
WHERE (CPDate > '2009-04-05')
GROUP BY ClmIDClmID是外键 我想查询他所对应的tb_ClaimProcces表中的近几天的记录根据ClmID进行分组然后找每组最近的一条记录
我想得到的是 list<tb_ClaimProcces>这样的集合
每个元素有ClmID, MAX(CPDate)两个属性
sql 是上面那样 但不知道用linq这么写
各路英雄帮帮忙
解决方案 »
- asp 中编写网页代码 运行时出现BC30311: 类型“System.Web.UI.HtmlControls.HtmlForm”的值无法转换为“System.Web.UI.HtmlControls.HtmlTableRow”。如何解决???
- 我使用 DataFormatString="{0:yyyy-MM-dd}" 为什么没效果?
- 下面的mscorlib是什么啊
- 同一程序,为什么在服务器A能运行,但在服务器B却不行?
- 100分有没有网上商城的例子
- System.DateTime currentTime=new System.DateTime(); 怎样在页面上输出currentTime的值?
- 我的.net不能运行web程序
- 请教一个关于显示随机码的问题。谢谢
- 如何在客户端调用C#编写的类库里的类
- 请教如何固定查询出来结果的表头
- 急.初学者下载了一个C#网站,但报错.请教大家.
- 客户端按钮如何在服务端里找到
linq该怎么写啊 我不想得到var这样的集合
如果得到了是var这样匿名类的集合
我该怎么拆分出
他的2个属性啊 循环的时候点不出来啊
var query = from t in db.tb_ClainProces
where t.CpDate >= new DateTime(2009, 1, 5)
group t by t.ClmId into g
select new
{
ClmId = g.Max(p => p.ClmId),
MaxDate = g.Max(p => p.CpDate)
}; List<tb_ClainProce> myCollection = new List<tb_ClainProce>();
foreach (tb_ClainProce t in db.tb_ClainProces)
{
myCollection.Add(t);
}
这样就得到了list <tb_ClaimProcces> = myCollection这样的集合。需要注意的问题是,Proces并不是一个合法英文,所以LINQ也许不能正常自动命名,正常来讲它会命名为tb_ClainProce,去掉S
foreach (var t in query)
{
tb_ClainProcea = new tb_ClainProce();
a.ClmId = t.ClmId;
a.CpDate = t.MaxDate;
myCollection.Add(a);
}
{
ClmId = g.Max(p => p.ClmId),
MaxDate = g.Max(p => p.CpDate)
};
这是什么意思啊
选择ClmId相同的情况下每组中的最大日期啊,你也可以把group语句放到select里面嵌套使用,不过我感觉这样结构更清晰一些。
那为什么 要写
ClmId = g.Max(p => p.ClmId), 不是已经分组了吗?
p是什么意思,该怎么理解
=>的含义是什么啊
能帮我讲明白点吗?还有你说的嵌套是怎么写的 ,我想看看
别BS我,
你的那个循环帮了我大忙 谢谢啦 (第一次写错变量名 第二次忘记写了 呵呵,)
因为ClmId每组中都是一样的,选最大的那一个实际也是同一个。但是貌似不能替换成ClmId = g.Single(p =>p.ClmId),或者ClmId = g.Any(p =>p.ClmId),实际我也刚学LINQ,不是很清楚这个细节。p => p.CpDate 是LINQ中的语法,p可以随便命名
有点像SQL查询中的
Select p.UnitPrice, p.Amount from Products p举个例子吧比如一个Products表包含单价和数量两个列:
var query = db.Products.Select(p => p.数量 * p.单价).Sum(); //就是取出这个表中每个商品的总价格。嵌套查询我刚又想了一下好像不行,还没想通呢。
你说的p就像是表的别名是吧。
我在机子上试
好像分组之后也可以加where条件
where写前面和后面有区别吗?var query = db.Products.Select(p => p.数量 * p.单价).Sum();
我的感觉是查询这个表中所有的商品的总价格
如果要查询每个商品应该不加sun把。。
不知道我想错了没帮帮核实。。
where写在分组前面和后面都可以,没有区别。var query = db.Products.Select(p => p.数量 * p.单价).Sum();
是查总价格,是我上次说错了。