Accepted answer

if that is one method call, it wont work. Silverlight calls are asynchronous you have to provide a callback for the Load method so that when its done it dumps to a new method....

private readonly TamplateTableContext m_tableContext = new TamplateTableContext();


public void onLoadOperationCompleted(LoadOperation<TemplateTable> lo)
            if (!lo.HasError)
               lbTemplateTable.DataContext = 
                  new ObservableCollection<TemplateTable>(lo.Entities.OrderBy(a =>;

Its a contrived example. I use MVVMLight and a ServiceLocator pattern, so what I am showing you isnt really in context because it looks like you may actually be doing it all in code behind...but I was really just trying to show you how to do the callback.


it's a bit hard to tell by the current code. Example below uses the same OrderBy expression, and it compiles and runs ok.

public class A { public int ID; }

public static void Test()
    List<A> listA = new List<A> {new A {ID=7}, new A {ID=2}, new A {ID=16}};

    var query1 = from x in listA orderby x.ID select x;
    var query2 = (from x in listA select x).OrderBy(a => a.ID);

    foreach(var x1 in query1) Console.WriteLine("{0}", x1.ID);
    foreach(var x2 in query2) Console.WriteLine("{0}", x2.ID);

Error you have might actually come from insufficient information about key data type. This discussion might help you with it.

Update: Ah, it's in debug, as in debug mode, not DEBUG target, is it ?!... If you are trying to see the result in quick watch or immediate window - it's expected error. This doesn't mean that there is something wrong with the code, just that debugger doesn't like lambda expressions.


You cannot inspect Lambda expressions at runtime. They need to be compiled, even changing a method containing a lambda (not just the lambda itself) at runtime requires recompilation.

Related Articles