2017-03-19 36 views
1

你能否幫忙複製下面出現在linq表達式中的「for」語句?linq的重複行

List<RawData> rawList = [{ "address":"adr1","id":[11,12,13],"city":"NYC"},{"address":"adr2","id":[22,23],"city":"Boston"}, {"address":"adr3","id":[77],"city":"Chicago"}]; 

List<Data> list = new List<Data>(); 
foreach (var item in rawList) 
{ 
    foreach (var id in item.idList) 
    { 
     Data d = new Data 
     { 
      id = id, 
      address = item.address, 
      city = item.city 
     }; 
     list.Add(d); 
    } 
} 

回答

5

在LINQ壓扁與SelectMany方法實現:

var res = rawList 
    .SelectMany(item => item.idList 
     .Select(id => new Data { 
      id = id, 
      address = item.address, 
      city = item.city 
     }) 
    ).ToList(); 

一旦你瞭解它做什麼,其餘的是不言自明的。

+0

謝謝!它的工作。 – kaspiton