2012-01-11 59 views
2

我有一個foreach循環,我試圖變成一個LINQ查詢的LINQ的ForEach用的AddRange和包含選擇

List<CustomType> typeList=new List<CustomType>(); 
List<int> ListID=new List<int>(); 

foreach (Info info in SubDetails) 
{ 
    if (typeList.Contains(info.TypeID)) 
    { 
     ListID.Add(info.OrderID); 
    } 
} 

現在我試圖把它變成一個LINQ循環

SubDetails.ForEach(u => List.AddRange(
        typeList.Contains(ID or something) 
        .Select(u.OrderID))); 

但是這並沒有明顯的工作,請指導我朝着正確的方向

回答

1

試試這個:

var ListID = SubDetails 
       .Where(info => typeList.Any(type => type == info.TypeID) 
       .Select(info => info.OrderID); 
1

您可以填寫ListID作爲

SubDetails.Where(t => typeList.Exists(lst => lst.XXX == t.TypeID)).Select(id => id.OrderID) 
+0

嗨,感謝您的答覆,但我從typeList.Contains(t.TypeID))作爲typeList.Contains得到的錯誤預期自定義類型的東西在裏面,我可以讓我的工作與合併的答案Ed,typeList.Any(u => u.TypeID == t.TypeID),請好好開導你的方法 – MegaMind 2012-01-11 07:02:35

+0

哎呀,我錯過了customtype部分 – V4Vendetta 2012-01-11 07:13:08

+0

1 upvote for you – MegaMind 2012-01-11 07:19:48

1

嘗試。

var ListID = typelist.Join(SubDetails,tl=>tl,sd=>sd.TypeID,(tl,sd)=>sd.OrderID).ToArray();