var linqs = from t in li group t by new { rybh = t.rybh, wagemonth = t.wageMonth, mc = t.mc, workno = t.workNo, section=t.section } into m select new { rybh = m.Key.rybh, mc =m.Key.mc, workno = m.Key.workno, wagemonth = m.Key.wagemonth, section = m.Key.section, gwgz = m.Sum(n => n.wagePrject == "岗位工资" ? n.wage : 0), }
在这段linq中: gwgz = m.Sum(n => n.wagePrject == "岗位工资" ? n.wage : 0),我现在要从一个键值对中获取前面的名称,和引号中的文字。
键值对是 Dictionary<string, string> prjList gwgz 就是prjList的键,"岗位工资"就是prjList的值
在select new 中写循环或方法都会报错,不知道该怎么处理。
在linq to sql中是不能使用外部方法的,因为无法转换为sql语句(linq的最终实现是通过sql的)。所以,你可以先把需要的数据通过toList()方法获取到内存中,然后再使用方法获取你要的数据形式。
当然也可以通过存储过程来实现。
看了好一会,没看懂,只能感觉这跟LINQ没啥鸟关系。
select new 里的项要根据一个Dictionary 动态创建。
@moyanger: 你是说Dynamic Select 吧?
问题可能出在针对“wagePrject”的条件判断,你可以改为下面的看会不会出错:
gwgz = m.Sum(n => n.wage)