gpt4 book ai didi

c# - 将 List 复制到其他但将函数应用于 LINQ 中的属性

转载 作者:行者123 更新时间:2023-11-30 19:37:30 24 4
gpt4 key购买 nike

我有一个类:

public class IdXYZ
{
int id;
double x;
double y;
double z;
public int ID
{
get { return id; }
set { id = value; }
}
public double X
{
get { return x; }
set { x = value; }
}

public double Y
{
get { return y; }
set { y = value; }
}
public double Z
{
get { return z; }
set { z = value; }
}
public IdXYZ(int argid, double argx, double argy, double argz)
{
id = argid;
x = argx;
y = argy;
z = argz;
}
public IdXYZ(double argx, double argy, double argz)
{
x = argx;
y = argy;
z = argz;
}
}

假设我已经填写了一个列表:

List<IdXYZ> Points = new List<IdXYZ>();
Points.Add(new IdXYZ(520, 150, 520 ));
Points.Add(new IdXYZ(567, 120, 522 ));
Points.Add(new IdXYZ(614, 520, 541 ));
Points.Add(new IdXYZ(661, 520, 540 ));
Points.Add(new IdXYZ(520, 110, 544 ));
Points.Add(new IdXYZ(543, 110, 545 ));
Points.Add(new IdXYZ(567, 610, 549 ));
Points.Add(new IdXYZ(614, 610, 510 ));
Points.Add(new IdXYZ(661, 160, 820 ));
Points.Add(new IdXYZ(520, 166, 530 ));
Points.Add(new IdXYZ(543, 166, 330 ));
Points.Add(new IdXYZ(567, 660, 520 ));
Points.Add(new IdXYZ(614, 660, 520 ));
Points.Add(new IdXYZ(661, 660, 620 ));

如何将该列表复制到其他但应用以下条件

if (item.Z % 2 == 0 || item.Z % 100 == 0) 
item.Z = item.Z - 505;
else
item.Z = item.Z - 405;

我在做

var PointsB = (from item in Points select item.Z % 2 == 0 || item.Z % 100 == 0 ? item.Z - 505 : item.Z - 405);

但这只会得到 Z 的可枚举

如何使用上述条件获取带 Z 的新列表?

最佳答案

你需要做这样的事情:

var newList =
Points
.Select(item =>
{
if (item.Z % 2 == 0 || item.Z % 100 == 0)
item.Z = item.Z - 505;
else
item.Z = item.Z - 405;
return item;
})
.ToList();

关于c# - 将 List<SomeClass> 复制到其他但将函数应用于 LINQ 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com