How to create a generic extension method?
c#, generics
Solution
The first error is because `Length` is a property of the `String` class while in your generic version the type of the T parameter is not known. It could be any type.
The second error is because you return just the query object but not the actual result. You might need to call `ToArray()` before returning.
With little modifications you could come up with this:
public static class ExtensionOperation
{
public static IEnumerable<T> AlphaLengthWise<T, L>(
this IEnumerable<T> names, Func<T, L> lengthProvider)
{
return names
.OrderBy(a => lengthProvider(a))
.ThenBy(a => a);
}
}
Which you could use like this:
string[] names = { "Jon", "Marc", "Joel", "Thomas", "Copsey", "Konrad", "Andrew", "Brian", "Bill" };
var result = names.AlphaLengthWise(a => a.Length);
Problem
I want to develop a Generic Extension Method which should arrange the string in alphabetical then by lengthwise ascending order. I mean ``` string[] names = { "Jon", "Marc", "Joel", "Thomas", "Copsey","Konrad","Andrew","Brian","Bill"}; var query = names.OrderBy(a => a.Length).ThenBy(a => a); ``` What is the way to develop Generic Extension Method? I tried : ``` public static class ExtensionOperation { public static T[] AlphaLengthWise<T>(this T[] names) { var query = names.OrderBy(a => a.Length).ThenBy(a => a); return query; } } ``` I received : Error 1: T does not contain definition for Length Error 2: can not convert `System.Linq.IOrderedEnumerable` to `T[]`.