C# 3.0 如何重写以下内容?(C3.0)
我正试着写以下内容C# 3.0 如何重写以下内容?(C3.0),c#-3.0,C# 3.0,我正试着写以下内容 double sum_res = 0.0; double yhat = 0; double res = 0; int n = 0; for(int i=0;i<x.Count;i++) { yhat = inter + (slp*x[i]); res = yhat - y[i]; n++; } 错误:无法从用法推断方法“System.Linq.Enumerable.SelectSystem.Collections
double sum_res = 0.0;
double yhat = 0;
double res = 0;
int n = 0;
for(int i=0;i<x.Count;i++)
{
yhat = inter + (slp*x[i]);
res = yhat - y[i];
n++;
}
错误:无法从用法推断方法“System.Linq.Enumerable.SelectSystem.Collections.Generic.IEnumerable,System.Func”的类型参数。尝试显式指定类型参数
需要帮助
谢谢,使用聚合而不是选择,因为它更接近于模拟您真正想要做的事情
double sum_res = Enumerable.Range(0, x.Count).Aggregate(0.0, (sum, i) =>
{
yhat = inter + (slp * x[i]);
res = yhat - y[i];
n++;
return sum + res * res;
});
使用聚合而不是选择,因为它更接近于模拟您真正想要做的事情
double sum_res = Enumerable.Range(0, x.Count).Aggregate(0.0, (sum, i) =>
{
yhat = inter + (slp * x[i]);
res = yhat - y[i];
n++;
return sum + res * res;
});
你得到的错误很好LINQ不知道你将从lambda返回什么。Sam演示了编译器如何通过显式返回已知类型的内容来确定返回的内容 将来,请考虑编译器将如何识别您试图从表达式返回的内容。这可以为您提供一条线索,让您知道如何以编译器可以解决的方式构造表达式
如果您的表达式是明确的,则不需要显式声明返回,否则您需要帮助编译器,如Sam所示。您得到的错误非常好,LINQ不知道您将从lambda返回什么。Sam演示了编译器如何通过显式返回已知类型的内容来确定返回的内容 将来,请考虑编译器将如何识别您试图从表达式返回的内容。这可以为您提供一条线索,让您知道如何以编译器可以解决的方式构造表达式
如果表达式是明确的,则不需要显式声明返回,否则需要帮助编译器,如Sam所示。lambda主体没有返回语句,因此出现错误。Select方法将Func lambda作为参数,该参数是一个函数,它接受与集合相同类型的内容并返回其他内容。您必须有一个return语句才能工作。lambda主体没有return语句,因此出现错误。Select方法将Func lambda作为参数,该参数是一个函数,它接受与集合相同类型的内容并返回其他内容。你必须有一个return语句才能使它工作。我不知道你为什么要增加n,但这真的不应该。我喜欢这样的东西
double sum_res = Enumerable.Range(0, x.Count).Aggregate(0.0, (sum, i) =>
sum + Math.Pow((inter + (slp * x[i])) - y[i]), 2.0))
);
我不知道你为什么要增加n,但那真的不应该。我喜欢这样的东西
double sum_res = Enumerable.Range(0, x.Count).Aggregate(0.0, (sum, i) =>
sum + Math.Pow((inter + (slp * x[i])) - y[i]), 2.0))
);