【问题标题】:Getting Function Evaluation Timedout error when using function inside linq query在 linq 查询中使用函数时出现函数评估超时错误
【发布时间】:2015-03-27 19:33:12
【问题描述】:

提前致谢。

我正在尝试查询一个对象并从结果中创建匿名类型。我在 linq 查询中使用了一个函数。在这个阶段,我收到一条错误消息“函数评估已禁用,因为之前的函数评估超时。您必须继续执行才能重新启用函数...”

请在下面找到我的示例代码。

var serviceResult = _service.GeResponse(panId, numberOfTransactions, startDate, endDate);

var balanceTrans = GetAllTypes<BalanceAdjustment>(serviceResult);
var presentmentTrans = GetAllTypes<Presentment>(serviceResult);

var test = balanceTrans.AsEnumerable();
var obj = test.Select(item => new SearchCardTransactionResult
{
    PanId = item.PanId,
    CardNumber = item.CardNumberFormatted,
    Balance = item.FinancialBalance,
    BillingAmount = Math.Abs(item.BillingAmount).Format(),
    BillingCurrency = GetCurrencyCode(item.BillingCurrency)
});


private IList<T> GetAllTypes<T>(GetTransactionsResponse result)
    where T : ValitorServices.ValitorPanWS.AbstractFinancialTransaction
{
    return result.FinanacialTransactions.OfType<T>().ToList();
}

谁能建议我在这里做错了什么?

非常感谢

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    我设法通过使用以下代码来解决。

    var currencyCodes = _service.GetCurrencyCodes().ToList();
    var test = balanceTrans.AsEnumerable();
    
        var obj = test.AsEnumerable().Select(item => new SearchCardTransactionResult
        {
            PanId = item.PanId,
            CardNumber = item.CardNumberFormatted,
            Balance = item.FinancialBalance,
            BillingAmount = Math.Abs(item.BillingAmount).Format(),
            BillingCurrency = currencyCodes.First(c=>c.NumericCode.Equals(item.BillingCurrency)).AlphabeticCode
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多