var maxHeight = draw._shapes.Aggregate((agg, next) =>next.height > agg.height ? next : agg);
if (draw._shapes.Count == 0)
trackBar_Size.Maximum = 484;
else
{
foreach (float heights in maxHeight)
{
if (heights < 412)
{
trackBar_Size.Maximum = 484;
}
else if (heights > 412)
{
trackBar_Size.Maximum = 415;
}
}
}
错误3 foreach语句无法对'sCreator.Shape'类型的变量进行操作,因为'sCreator.Shape'不包含'GetEnumerator'的公共定义
我在 var maxHeight 语句中收到此错误。那么如何解决此错误并将LINQ结果用作浮点值?
答案 0 :(得分:5)
这是因为Aggregate
方法返回单个值(据我所见,_shapes
中的最大值)。
简单地,尝试编写maxHeight.GetEnumerator()
来看看编译器会抱怨。为了使用foreach
循环,您需要具有集合(具有迭代器)。
或者,尝试编写maxHeight.GetType()
(或maxHeight.ToString()
)来检查其真正含义。
或者只是在调试模式下检查变量,在适当的位置设置断点。
答案 1 :(得分:1)
var maxHeight = draw._shapes.Aggregate((agg, next) => next.height > agg.height ? next : agg);
if (maxHeight.height > 412)
{
trackBar_Size.Maximum = 412;
}
else if (maxHeight.height < 412)
{
trackBar_Size.Maximum = 484;
}
此代码将获得所需的高度作为浮点值。