转向C#与Linq

时间:2018-01-25 07:39:55

标签: c# linq

我有以下LINQ分组条款。我想把钱分成几个月。它有效,但钱(Deckungsbeitrag - 德语格式:##,##)总是0.我错过了改变格式或什么?我已在以下脚本中尝试过不同的转换:

  var results = (from r1 in table.AsEnumerable() group r1 by new {
          Geschäftspartner = r1.Field < string > ("Geschäftspartner"),
              Kunde = r1.Field < string > ("Kunde_KZ"),
              //Monat = r1.Field<string>("Monat")
      }
      into g select new {

          Kunde_Kz = g.Key.Kunde,
              Geschäftspartner = g.Key.Geschäftspartner,
              Jan = g.Where(c => c.Field < string > ("Monat") == "7_2017").Sum(c => Convert.ToDouble((c.Field < string > ("Deckungsbeitrag").Replace(",", ".")))),
              Feb = g.Where(c => c.Field < string > ("Monat") == "8_2017").Sum(c => c.Field < float > ("Deckungsbeitrag")),
              March = g.Where(c => c.Field < string > ("Monat") == "9_2017").Sum(c => c.Field < double > ("Deckungsbeitrag"))
      }).ToList();

修改 输入表就像

  

xyv |库特| 23,45 | 7_2017 |

因此,对于Money,某些客户(Kunden)的某些月份可能存在空值,所以我尝试了这个:

Jan = g.Where(c => c.Field<string>("Monat").Contains("/7_2017/")).Sum(c => (double?)c.Field<decimal>("Deckungsbeitrag")) ?? 0.0,
    Feb = g.Where(c => c.Field<string>("Monat").Contains("/8_2017/")).Sum(c => (double?)c.Field<decimal>("Deckungsbeitrag")) ?? 0.0,
     March = g.Where(c => c.Field<string>("Monat").Contains("/9_2017/")).Sum(c => (double?)c.Field<decimal>("Deckungsbeitrag")) ?? 0.0

但仍然只有0个物有所值...

网格中的输出:

Select KATHOPEGN2 "Katholische Kirchenstiftung ""Herz Jesu""" 0 0 0 
Select IMGAECREU1 "Landgasthof ""In Gaertlein """ 0 0 0 
Select 180GRGERA1 180 Grad-Event GmbH 0 0 0 
Select RASSFBETZ1 1a autoservice Rass 0 0 0 
Select ASDIEBAYR1 A. S. Dienstleistungen 0 0 0 
Select VEOANAK a.n.a. Kreislaufwirtschaft 0 0 0 
Select ABWASEGLO1 Abwasserzweckverband Trubachtal 0 0 0 
Select OELMEPEGN1 Adolf Oelmeier 0 0 0 
Select AECGMBADB1 AEC Alternative Energieconzepte GmbH 0 0 0 
Select VLLASPEGN1 Afrim Vllasalija 0 0 0 
Select AGIPSBAYR1 Agip Station Hoellrich 0 0 0 

0 个答案:

没有答案