如何在VB 2010中执行此操作(C#到VB转换)

时间:2010-05-19 21:19:19

标签: vb.net anonymous-methods c#-to-vb.net

我想将以下内容翻译成VB 2010(带有高级语法)


_domainContext.SubmitChanges(
     submitOperation =>
     {
        _domainContext.Load<Customer>(
             _domainContext.GetCustomersQuery(),
              LoadBehavior.RefreshCurrent,
              loadOperation =>
              {
                 var results = _domainContext.Customers.Where(
                         entity => !loadOperation.Entities.Contains(entity)).ToList();

                 results.ForEach( enitity => _domainContext.Customers.Detach(entity));
              }, null);
      }, null);

我设法通过其他方式获得上述内容(但不使用匿名方法)。我希望看到VB 2010中可用的所有高级语法都应用于上述语法。

有人可以帮我吗?

感谢

1 个答案:

答案 0 :(得分:0)

_domainContext.SubmitChanges(
    Sub(submitOperation)
        _domainContext.Load<Customer>(
            _domainContext.GetCustomersQuery(),
            LoadBehavior.RefreshCurrent,
            Sub(loadOperation)
                Dim results = _domainContnext.Customers.Where(
                                Function(entity) Not loadOperation.Entities.Contains(entity)) _
                                .ToList();
                results.ForEach(Sub(entity) _domainContext.Customers.Detach(entity))
            End Sub,
            Nothing)
    End Sub, Nothing)

我显然无法将其添加到编译器中,但这应该会让您朝着正确的方向前进。基本上,只要您在C#中看到=>,您就会替换为内联SubFunction,具体取决于是否需要返回值。如果C#lambda中有大括号,你将在VB中得到一个多行子/函数。请注意,您可以在VB2010中执行此操作,因为VB08不支持Sub lambdas或多行函数lambdas。