2017-06-09 35 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