C# 如何将普通foreach替换为linq foreach? publicstaticlist-ValidateColumnInList(List-DuplicateExpression),其中TDuplicate:DuplicateExpression { List TempDuplicateExpression=新列表(); var itemProperties=typeof(TItem).GetProperties(); foreach(重复表达式中的var DplExpression) { bool IsContainColumn=itemProperties.Any(column=>column.Name==DplExpression.ExpressionName); 如果(!isContaineColumn) { TempDuplicateExpression.Add(DplExpression); } } 返回表达式; }

C# 如何将普通foreach替换为linq foreach? publicstaticlist-ValidateColumnInList(List-DuplicateExpression),其中TDuplicate:DuplicateExpression { List TempDuplicateExpression=新列表(); var itemProperties=typeof(TItem).GetProperties(); foreach(重复表达式中的var DplExpression) { bool IsContainColumn=itemProperties.Any(column=>column.Name==DplExpression.ExpressionName); 如果(!isContaineColumn) { TempDuplicateExpression.Add(DplExpression); } } 返回表达式; },c#,linq,foreach,C#,Linq,Foreach,在上面的部分中,如何将上面的foreach替换为linqforeach这里不需要foreach或foreach。下面的代码应给出结果: public static List<TDuplicate> ValidateColumnInList<TItem, TDuplicate>(List<TDuplicate> DuplicateExpression) where TDuplicate : DuplicateExpression { List<TD

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

这里不需要
foreach
foreach
。下面的代码应给出结果:

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;
}
var itemProperties=typeof(TItem).GetProperties();
List tempDuplicateExpression=DuplicateExpression
.Where(m=>!itemProperties.Any(column=>column.Name==m.ExpressionName))
.ToList();
返回表达式;

您可以通过以下简单方式获得结果:

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

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

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

可能与您的误解重复,Linq是一种用于选择数据的查询语言,它没有ForEach,List类确实有for each和Parallel类,但它们都不是Linq
DuplicateExpression.ForEach(n=>
    {
        bool IsContainColumn = itemProperties.Any(column => column.Name == n.ExpressionName);
        if (!IsContainColumn)
        {
            TempDuplicateExpression.Add(n);
        }
    }
)