Casablanca: Zugriff auf Anonyme Objekte

Hi,

ich bekomme aus der Methode "public

  
        public IQueryable<object> getBenutzer()  
        {  
            return from benuzer in Benutzer  
                   select new {  
                       benutzerID = benutzer.BenutzerID,  
                       ...  
                   };  
        }  
  

eine Liste von Benutzern zurück.

  
var benutzer = getUsers().ToList();  

Wie kann ich bitte an die Eigenschaften und deren Inhalte kommen? Ich sehe ja, dass alle Properties und Values da sind, diese Schleife aber funktioniert nicht:

  
foreach (var item in benutzer) {  
   var test = item.userID;  
}  

item kennt seine Eigenschften nicht und sagt dass "object enthält keine Definition für "benutzerID". Hat jemnd eine Idee, wie man da an Properties kommt?

Danke im Voraus.

  1. item ist der name der Objektproperty.
    benutzer[item].userID sollte das sein, was du suchst.

    1. Hi,

      vielen Dank für die Antwort. Leider klappt das nicht:

        
      Die beste Übereinstimmung für die überladene System.Collections.Generic.List<object>.this[int]-Methode enthält einige ungültige Argumente.  
      
      

      Ich verstehe auch das nicht ganz. In der froreach-Schleife bekommt man ja auch die einzelnen Objekte über item. Warum soll man wieder dies über benutzer[item].benutzerID gehen?

      Danke

      1. System.Collections.Generic.List<object>.this[int]-Methode enthält einige ungültige Argumente.

        Oh, ich bin von Javascript ausgegangen, das sieht mir eher nach Java aus. Und das ist ja auch keine for-in-Schleife.

        var benutzer = getUsers().ToList();

        Gibt es denn "var" in Java?

        1. Hi,

          das ist ein C#-Code. Mit java habe leider schon lange nicht mehr gearbeitet.

          Gruß

  2. Tach!

    ich bekomme aus der Methode "public

    public IQueryable<object> getBenutzer()
            {
                return from benuzer in Benutzer
                       select new {
                           benutzerID = benutzer.BenutzerID,
                           ...
                       };
            }

    
    > eine Liste von Benutzern zurück.  
      
    Nee, die gibts erst mit dem :  
      
    
    > ~~~sql
      
    
    > var benutzer = getUsers().ToList();  
    > 
    
    

    Was du nun hast, ist eine Liste mit Objekten einer anonymen Klasse, die sich aber hinter object verstecken. Und da bekommst du sie ganz schlecht wieder hervorgeholt, weil du sie nicht wieder in das anonyme Objekt casten kannst. Jedenfalls nicht so einfach. Mit "c# anonymous types cast" bekommt man einige Lösungsvorschläge, aber schön geht anders.

    Wie kann ich bitte an die Eigenschaften und deren Inhalte kommen?

    Reflection ginge vermutlich auch noch, aber definier dir lieber eine Klasse, wenn getBenutzer() wirklich andere Daten enthalten soll als die Elemente in Benutzer.

    dedlfix.

    1. Hallo,

      vielen Dank nochmals.
      Die Klasse habe ich ja bereits. Ich wollte wissen ob es eventuell auch anders gehen würde. Naja dann zurück zu meiner Klasse :-).

      Danke und Gruß