static void Main()
{
string[] a = { "a", "asd", "bdfsd", "we" };
a = a.OrderBy(fun).ToArray();
}
private static int fun(string s)
{
return s.Length;
}
它给出了编译时错误。我知道我们可以用这样的 Lambda 表达式来做到这一点。 a.OrderBy(s=>s.Length).ToArray();
但我想通过定义不同的函数来做到这一点。我做错了什么?
最佳答案
表达式 fun
是一个无类型的表达式,称为方法组。
由于方法组没有类型,编译器无法推断通用 OrderBy
方法的类型参数。
您需要显式传递类型参数,如下所示:
a = a.OrderBy<string, int>(fun).ToArray();
或者,
a = a.OrderBy(new Func<string, int>(fun)).ToArray();
关于c# - 传递 Func<TSource, TKey> keySelector 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2812018/