2017-06-09 74 views
-7

我需要將VB.NET應用程序轉換爲C#。項目有以下幾行:無法將VB.NET轉換爲C#

inTrip.Stops.AddRange(trip.Stops) 
inTrip.Stops.ForEach(Sub(s) s.Trip = inTrip) 

但我不明白它是幹什麼的,所以我無法將其轉換。什麼是這些行的C#的正確代碼?

編輯

根據我的理解,應該是這樣的:

foreach (var item in trip.Stops) 
{ 
    var item_db = mapper.Map<TripStop>(item); 
    inTrip.TripStops.Add(item_db); 
} 

foreach (var item in inTrip.TripStops) 
{ 
    item.Trip = inTrip; 
} 

但這些循環引用(inTrip又具有TripStops以及用於收集組旅行元素的每個元素集合)混淆了我

+4

我不是VB.NET程序員。但我可以很容易地閱讀。第一行將一個集合添加到另一個集合。第二行使用lambda表達式在集合上進行循環,並將值分配給集合中項目的屬性。 C#幾乎完全相同。我想你可以弄清楚這一點。 – mason

+3

很簡單。只需在兩行的末尾添加分號,然後將'Sub(s)'改爲'=>' – Icemanind

+0

它看起來很簡單。但是我收到一個錯誤:'ICollection '沒有包含'AddRange'的定義,也沒有接受類型'ICollection '和'ICollection '的第一個參數的擴展方法'AddRange'不包含'ForEach'並且沒有擴展方法'ForEach'接受'ICollection '類型的第一個參數可以被發現(你是否缺少使用指令或程序集引用?) –

回答

1

代碼:

  1. 追加trip.Stops集合inTrip.Stops
  2. 運行一個foreach遍歷inTrip.Stops與lambda表達式,一個「父」屬性設置爲inTrip

C#代碼是非常相似的;只是lambda表達式的不同語法:

inTrip.Stops.AddRange(trip.Stops); 
inTrip.Stops.ForEach((s) => s.Trip = inTrip); 
+0

我收到一個錯誤:'ICollection '沒有包含'AddRange'的定義,也沒有接受類型'ICollection '和'ICollection '的第一個參數的擴展方法'AddRange'不包含'ForEach'並且沒有擴展方法'ForEach'接受'ICollection '類型的第一個參數可以被發現(你是否缺少使用指令或程序集引用?) –

+0

@maccettura,是 –

+1

@OlegSh這些方法通常與'List'不是'ICollection'。你可以將屬性類型更改爲「List」嗎? – BradleyDotNET