【问题标题】:How to replace normal foreach to linq ForEach?如何将正常的 foreach 替换为 linq ForEach?
【发布时间】:2017-01-02 19:22:27
【问题描述】:
public static List<TDuplicate> ValidateColumnInList<TItem, TDuplicate>(List<TDuplicate> DuplicateExpression) where TDuplicate : DuplicateExpression
{
    List<TDuplicate> TempDuplicateExpression = new List<TDuplicate>();
    var itemProperties = typeof(TItem).GetProperties();
    foreach (var DplExpression in DuplicateExpression)
    {
        bool IsContainColumn = itemProperties.Any(column => column.Name == DplExpression.ExpressionName);
        if (!IsContainColumn)
        {
            TempDuplicateExpression.Add(DplExpression);
        }
    }
    return TempDuplicateExpression;
}

在上面的部分中如何将上面的foreach替换为linq ForEach

【问题讨论】:

标签: c# linq foreach


【解决方案1】:

这里不需要foreachForEach。下面的代码应该会给你结果:

var itemProperties = typeof(TItem).GetProperties();
List<TDuplicate> tempDuplicateExpression = DuplicateExpression
    .Where(m => !itemProperties.Any(column => column.Name == m.ExpressionName))
    .ToList();

return tempDuplicateExpression;

【讨论】:

    【解决方案2】:

    你可以通过这种简单的方式得到结果:

    var result = DuplicateExpression.Where(n=>!itemProperties.Any(column => column.Name == n.ExpressionName)).ToList();
    

    或者您可以像这样使用 ForEach:

    DuplicateExpression.ForEach(n=>
        {
            bool IsContainColumn = itemProperties.Any(column => column.Name == n.ExpressionName);
            if (!IsContainColumn)
            {
                TempDuplicateExpression.Add(n);
            }
        }
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2014-03-16
      • 2013-07-08
      • 2014-09-02
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多