C# 如何从条件列表中减去属性值
在我的C应用程序中,我需要从一个巨大的列表HoList中减去一个属性值?现在我这么做了,不确定我这么做对吗C# 如何从条件列表中减去属性值,c#,list,select,subtraction,C#,List,Select,Subtraction,在我的C应用程序中,我需要从一个巨大的列表HoList中减去一个属性值?现在我这么做了,不确定我这么做对吗 int value1 =2; HoList.Select(r => r.Count - value1).ToList(); 在你的问题中,你采用的是HoList,它是一种具有属性计数的类型。我可以通过查看Select语句看到这一点 当您调用Select时,您正在选择要返回的内容,在您的示例中,您正在返回Count-value1。这很可能是一个int结果。Select只是返回一个IE
int value1 =2;
HoList.Select(r => r.Count - value1).ToList();
在你的问题中,你采用的是HoList,它是一种具有属性计数的类型。我可以通过查看Select语句看到这一点 当您调用Select时,您正在选择要返回的内容,在您的示例中,您正在返回Count-value1。这很可能是一个int结果。Select只是返回一个IEnumerable,然后ToList将该IEnumerable转换为列表。您也没有将该列表分配给任何对象 如果要更改原始列表,可以执行以下操作:
HoList.ForEach(r => r.Count -= value1);
如果它是一个大列表,您也可以利用并行性来实现类似的功能:
HoList.AsParallel().ForAll(r => r.Count -= value1);
使用现有代码,更正如下
int value1 =2;
HoList = HoList.Select(r => r.Count - value1).ToList();
或者如果你需要保留原件
int value1 =2;
var newList = HoList.Select(r => r.Count - value1).ToList();
关键是Select不会修改列表,它会创建一个新列表yes。如果你想说从每个项目的属性计数中减去值,是的,你做得对。是的,但它不起作用?为什么不呢?发生了什么?@MichaelPuckettII解决方案是正确的,如果您想减去该值并用旧值替换它。@AAAA-代码是错误的,它将丢弃结果。Select不会就地修改列表,而是返回一个新的、经过转换的列表。您不能分配HoList=HoList.selector=>r.Count-value1.ToList;因为你想把HoList的类型转换成一个列表。如果HoList是一个列表,那么是的,但我们知道这不是因为他在语句中使用了r.Count。另外,Select不会创建列表,它会在本例中枚举时对枚举进行变异,并与EF不同。。ToList是使用Select语句的结果生成新列表的程序。