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[]`.

Original source