2017-03-19 37 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