Q:

<> symbol in type name in C#

Please help me understand what this is : <>
I am doing some reflection looking for types in an assembly and I get a bunch of types, all with the same name, but different methods :
{Name = "<>c__DisplayClass1" 
  FullName = "HelixToolkit.Wpf.ElementSortingHelper+<>c__DisplayClass1"}

A:

It's the naming convention that the compiler uses when translating lambda expressions into classes.
Here's an example. Starting with this class:
public class UserQuery
{
    private void Main()
    {
        var x = 42;
        Func<int> f = () => x;
        var y = f();
    }
}

The compiler turns this into:
public class UserQuery
{
  public UserQuery()
  {
    base..ctor();
  }

  private void Main()
  {
    UserQuery.<>\u003C\u003Ec__DisplayClass1 cDisplayClass1 = new UserQuery.<>\u003C\u003Ec__DisplayClass1();
    cDisplayClass1.x = 42;
    int num = new Func<int>((object) cDisplayClass1, __methodptr(<\u003CMain>\u003Eb__0))();
  }

  [CompilerGenerated]
  private sealed class <>\u003C\u003Ec__DisplayClass1
  {
    public int x;

    public <>\u003C\u003Ec__DisplayClass1()
    {
      base..ctor();
    }

    public int <\u003CMain>\u003Eb__0()
    {
      return this.x;
    }
  }
}

Not legal c#, but legal IL.

