任何方法可以避免在linq内装箱/拆箱

时间:2018-02-22 15:50:40

标签: c# .net linq boxing

我正在尝试编写一个Linq表达式,用于检查对象列表中的任何元素是否与谓词匹配。

 protected override void ValidateRulesBeforeDelete(List<object> deleteRecords)
 {
     base.ValidateRulesBeforeDelete(deleteRecords);
     var defaultProductStatus = GetDefaultProductStatus();
     if (deleteRecords.Any(x => x.Equals(defaultProductStatus.Id)))
     {
         throw new CustomException(PageResource.ProductStatusViewModel_CannotDeleteDefaultProduct);
     }
}

public class ProductStatusViewModel 
{
    public int Id { get; set; }
}

上面的代码工作正常。但是,最近我在 CLR通过C#中读到了关于装箱/拆箱的问题,我怀疑是,要应用上面的谓词,编译器框会将整数转换为列表中每个元素的对象吗?

我100%确定列表中包含整数,并将其设置为对象

那么有什么方法可以重新编写上面的代码,以避免装箱/拆箱,如果发生任何事情?

0 个答案:

没有答案