c# lambda 表达式问题请教

SomethingJack 2014-12-09 03:50:33


如图 以上的图片数据,我想利用c# lambda 表达式计算出这样几个数据,对于c# lambda 表达式不太熟悉。多谢

是根据Lane来划分数据的,Lane可能会有多条

参数1: 根据Lane 取 (speed_Class3 * volume_Class3 + speed_Class4 * volume_Class4 )/(volume_Class3+volume_Class4)
参数2:根据Lane 取得Class3 与Class4的和。
参数3: 根据Lane 取Occu值最大的.

请问以上的需求是否可以用c# lambda 表达式实现?
...全文
211 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
SomethingJack 2014-12-09
  • 打赏
  • 举报
回复
如果是按照SQL语句来的话 应该是这样. speed_Class3 * volume_Class3 + speed_Class4 * volume_Class4
select Sum(a.speed*a.volume)/Sum(volume) as 参数1,Sum(volume) as 参数2,取最大的Occu值 as参数3 from table a Group by Lane 
SQL来表现的大概就是这个意思
SomethingJack 2014-12-09
  • 打赏
  • 举报
回复
引用 7 楼 geyewei 的回复:
那么 "参数2:根据Lane 取得Class3 与Class4的和。"这句话的意思就是 当Lane=1的时候,返回Class为3的 Speed的值+Class为4的Speed的值吧? 假设把数据都放在一个叫A的二维结构体里面了。 试着用代码描述一下你的问题,是不是下面这样的啊? From lane in (from m in A Select m.Lane Distinct) Select plan=lane, 参数1=if(lane=0, 一个算术式, 0), 参数2=if(lane=1, (From m in A where m.Lane=lane and (m.Class=3 or m.Class=4) Select m.Speed).Sum(), 0), 参数3=if(lane=2, (From m in A where m.Lane=lane Select m.Occu).Max(), 0)
现在不是有Lane为0和1的几条数据吗 那么我Lane0现在有0-4条数据,根据这个计算Lan0的三个参数值, 同样的Lane1也是的。有多少个不同的Lane就计算多少条数据。 然后根据公式 Lane0的参数1就是等于根据图和公式,那就是(0*0+0*0)/(0+0) Lane1的参数1就是根据图和公式,那就是(-50*4+-50*4)/(4+4) speed_Class3 * volume_Class3 + speed_Class4 * volume_Class4这个公式的意思是 Speed字段的Class为3和4的值. 你的那个逻辑理解错了
geyewei 2014-12-09
  • 打赏
  • 举报
回复
那么 "参数2:根据Lane 取得Class3 与Class4的和。"这句话的意思就是 当Lane=1的时候,返回Class为3的 Speed的值+Class为4的Speed的值吧? 假设把数据都放在一个叫A的二维结构体里面了。 试着用代码描述一下你的问题,是不是下面这样的啊? From lane in (from m in A Select m.Lane Distinct) Select plan=lane, 参数1=if(lane=0, 一个算术式, 0), 参数2=if(lane=1, (From m in A where m.Lane=lane and (m.Class=3 or m.Class=4) Select m.Speed).Sum(), 0), 参数3=if(lane=2, (From m in A where m.Lane=lane Select m.Occu).Max(), 0)
software_artisan 2014-12-09
  • 打赏
  • 举报
回复
兰姆达表达式不是公式,是一种匿名方法的描述方式。凡是函数能实现的,兰姆达表达式都能写出来。
SomethingJack 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 geyewei 的回复:
请告诉我 参数1 是指什么?speed_Class3 是指什么?
根据上述描述 最终的结果应该是两条数据,根据Plan来区分的 现在只有0,1可能会有0,1,2等. 然后最终结果 Plan 参数1 参数2 参数3 0 ... .... .... 1 .... .... ... 我知道的思路是 首先应该是像SQL那样根据Plan Group by一下 然后根据三个参数的公式进行计算 不好意思 不知道描述够不够清楚 如果lambad表达式实现不了 我就考虑其他方式
SomethingJack 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 geyewei 的回复:
请告诉我 参数1 是指什么?speed_Class3 是指什么?
参数1 就是一个变量名称的代名词。 Spleed_Class3 意思就是说 Class为3的Spleed的值 ,有一个Class字段 在图中
exception92 2014-12-09
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
同问一楼。 可以实现!!
先给了链接,http://msdn.microsoft.com/zh-cn/library/vstudio/bb882653(v=vs.100).aspx
exception92 2014-12-09
  • 打赏
  • 举报
回复
同问一楼。 可以实现!!
geyewei 2014-12-09
  • 打赏
  • 举报
回复
请告诉我 参数1 是指什么?speed_Class3 是指什么?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧