【问题标题】:Using InLineAssignHelper in a ForEach to update two fields在 ForEach 中使用 InLineAssignHelper 更新两个字段
【发布时间】:2017-09-01 11:39:34
【问题描述】:

我有以下代码

de.Tbl_Summary.Where(Function(c) CBool(c.CPID = uPn AndAlso _
c.C_Year = cutoffDates.ActualClaimYear AndAlso _
c.C_Month >= cutoffDates.ActualClaimMonth _
)).ToList().ForEach(Function(r) InlineAssignHelper(r.TeamID, uTid))

它是从 C# 示例转换和改编的。这工作正常,但我现在需要更新两个字段,所以我尝试...

 de.Tbl_Summary.Where(Function(c) CBool(c.CPID = uPn AndAlso _
 c.C_Year = cutoffDates.ActualClaimYear AndAlso _
 c.C_Month >= cutoffDates.ActualClaimMonth _
 )).ToList().ForEach(Function(r) InlineAssignHelper(r.TeamID, uTid), _
 InlineAssignHelper(r.CostCentre, uCostCentre))

这不起作用,因为我在第二个 InLineAssignHelper 下得到一条波浪线并出现错误

Error   BC30057 Too many arguments to 'Public Overloads Sub 
ForEach(action As Action(Of Tbl_IndividualClaims))'.

如何实现将更新 TblIndividualClaims 中的 2 个字段的 ForEach?

谢谢

更新

这是InlineAssignHelper的VB转换代码(从C#转换而来)

Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
        target = value
        Return value
    End Function

【问题讨论】:

    标签: vb.net entity-framework entity-framework-5


    【解决方案1】:

    如果你绝对必须保持相同的格式,那么它最终会像这样:

    .ForEach(Function(r) 
                 InlineAssignHelper(r.TeamID, uTid)
                 InlineAssignHelper(r.CostCentre, uCostCentre)
             End Function)
    

    附:在这种情况下使用Sub 更有意义

    【讨论】:

    • 这给出错误无法推断返回类型考虑添加'As'子句来指定返回类型
    • 完全正确.. 使用Sub。你没有返回任何东西
    • 我已经更新了我的问题并添加了 InlineAssignHelper 代码,它表明函数正在返回一些东西。
    • 目前我的代码正在运行,但是...我正在选择列表,然后是 ForEach 更新 TeamID,然后执行相同的选择,另一个 ForEach 更新 CostCentre...这必须有点矫枉过正......
    • 我已经尝试过 ForEach(Sub(r)... 但是得到了同样的错误 Too many arguments to 'Public Overloads Sub ForEach(action As Action(Of Tbl_IndividualClaims))'。
    猜你喜欢
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多