2017-03-19 7 views
1

linq式の下に表示される "for"ステートメントを複製することはできますか?linqで重複する行

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

SelectMany方法で行われます:あなたはそれが何をするかを理解すれば

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

、残りは自明です。

+0

ありがとうございます!それは働いている。 – kaspiton