2017-10-18 70 views
0

我有一个CSV导入对象的LINQ集团按行成

obj_cellelist = (from line in File.ReadAllLines(pathCelle) 
          let columns = line.Split(stringSeparators, StringSplitOptions.None) 
          select new obj_celle() 
          {  
           Cgi = columns[0], 
           zonaNis = columns[0].Length > 8 ? int.Parse(columns[0].Substring(5, 3)) : -1, 
           codice_Sarf = columns[0].Length > 11 ? int.Parse(columns[0].Substring(8, 4)) : -1, 
           IDCella = columns[1], 
           Operatore = columns[2], 
           Void = columns[3], 
           Via = columns[4].Replace("''", "'"), 
           Comune = columns[5].Replace("�", "A'"), 
           Provincia = columns[6], 
           Regione = provincie.Keys.Contains(columns[6]) ? provincie[columns[6]] : "", 
           Nazione = columns[7], 
           Latitudine = decimal.Parse(columns[8].Replace('.', ',')) , 
           Longitudine = decimal.Parse(columns[9].Replace('.', ',')) , 
           Void1 = columns[10], 
           Azimuth = columns[11].Length > 0 ? int.Parse(columns[11]) : -1 }).ToList(); 

我需要通过Longitudine和Latitudine组,并得到所有不同的方位行。对于每个纬度,纵向,最多有三个不同的方位角。 除了cgi,其他值都是一样的,我不需要。 新对象应包含 zonaNis,codice_Sarf,IDCella,算符,空隙,VIA,拱廊,省报,大区,Nazione,Latitudine,Longitudine,Void1,Azimuth1,Azimuth2,Azimuth3

实施例:

861 ## #3OF034AA ### VODAFONE ###### STRADA TEST ### NOLA ### AR ###意大利### 43.74619685 ### 11.71866206 ###### 110

862 ### 3OF034AA ### VODAFONE ###### STRADA TEST ### NOLA ### AR ### ITALY ### 43.74619685 ### 11.71866206 ###### 240

864 ### 3OF034AA ## #VODAFONE ###### STRADA TEST ### NOLA ### AR ###意大利### 43.74619685 ### 11.71866206 ###### 110

865 ### 3OF034AA ### VODAFONE ###### STRADA TEST ### NOLA ### AR ###意大利### 43.74619685 ## #11.71866206 ###### 240

867 ### 3OF034AA ### VODAFONE ###### STRADA TEST ### NOLA ### AR ### ITALY ### 43.74619685 ### 11.71866206 ###### 110

868 ### 3OF034AA ### VODAFONE ###### STRADA TEST ### NOLA ### AR ### ITALY ### 43.74619685 ### 11.71866206 ## ####在对象240

输出应该

3OF034AA ### VODAFONE ###### STRADA TEST ### NOLA ### AR ###意大利### 43.74619685 ### 11.71866206 ###### 110 ### 240

+0

请[mcve]。以名称,纬度,长度做一个小例子,并显示使用预期的结果。他们以你计算的方式。 –

+0

因为目前还不清楚。因为方位在点之间。 –

+0

您是否想将一个Csv转换为其他Csv格式? –

回答

0
obj_cellelist 
    .GroupBy(p => new { Lat = p.Latitudine, Long = p.Longitudine }) 
    .Select(g => new { place = g.Key, azimuths = g.Select(a => a.Azimuth).Disctinct() }) 
    .ToList(); 

这将产生你的对象列表具有两个属性。第一个属性的类型是obj_celle,另一个属性是不同方位角的列表。

+0

不工作。我需要新的zonaNis,codice_Sarf,IDCella,Operatore,Void,Via,Comune,Provincia,Regione,Nazione,Latitudine,Longitudine,Void1,Azimuth1,Azimuth2,Azimuth3 –

+0

您拥有属性所有的这些值,方位角属性方位角作为列表。有多少个方位角可以存在,至关重要的是它们全部显示为单独列而不是列表的单个属性? – Rob