【问题标题】:Change query value based on parameter [duplicate]根据参数更改查询值[重复]
【发布时间】:2014-12-18 10:20:35
【问题描述】:

我有一个问题:

doc.NonFinancialAssetSection.NonFinancialAssets
              .Where(m => m.Owner.Id == ownerId && m.InvestableAsset == true)
              .Sum(s => s.CurrentValue);

我需要将 s.CurrentValue 的值更改为 s.ProposedValue,但不是再次复制和粘贴查询,有什么方法可以让这个值依赖于传递给控制器​​的参数?

【问题讨论】:

    标签: c# .net asp.net-mvc linq


    【解决方案1】:

    是的,您可以这样做:

    var query = doc.NonFinancialAssetSection.NonFinancialAssets
                    .Where(m => m.Owner.Id == ownerId && m.InvestableAsset == true);
    
    var sum = (condition) 
         ? query.Sum(s => s.CurrentValue) 
         : query.Sum(s => s.ProposedValue);
    

    你也可以这样做:

    var sum = doc.NonFinancialAssetSection.NonFinancialAssets
                 .Where(m => m.Owner.Id == ownerId && m.InvestableAsset == true)
                 .Sum(s => (condition) ? s.CurrentValue : s.ProposedValue);
    

    或者这个:

    Func<NonFinancialAsset, double> sumProperty = (condition)
         ? s => s.CurrentValue
         : s => s.ProposedValue;
    
    var sum = doc.NonFinancialAssetSection.NonFinancialAssets
                 .Where(m => m.Owner.Id == ownerId && m.InvestableAsset == true)
                 .Sum(sumProperty);
    

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 2015-03-09
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      相关资源
      最近更新 更多