10
votes

Question simple Linq: Comment choisir plus d'une colonne?

Mon code est le suivant:

            List<Benutzer> users = (from a in dc.Benutzer
                                    select a).ToList();


1 commentaires

Vous avez le type Benutzer ? Jamais envisagé d'utiliser C # localisé? Liste Benutzer = (Aus A in DC.Benutzer Wähle A) .zuliste (); ;)


3 Réponses :


4
votes
    List<Benutzer> users = (from a in dc.Benutzer
                            select new Benutzer{
                             myCol= a.myCol,
                             myCol2 = a.myCol2
                             }).ToList();
I think that's what you want if you want to make the same kind of list. But that assumes that the properties you are setting have public setters.

5 commentaires

Vous avez besoin d'une virgule pour séparer les champs, bien que je doute que c'est pourquoi ça se brise


Je viens de l'essayer sur ma machine avec un cas d'utilisation très similaire et cela a fonctionné. Pouvez-vous coller l'erreur exacte?


La construction explicite du type d'entité 'Dal.Benutzer' dans la requête n'est pas autorisée. Thats l'erreur


Essayez de supprimer le Benutzer de la requête alors: Sélectionnez Nouveau {myCol = A.Mycol, ...} pour construire un type anonyme.


Je suppose que c'est parce que vous n'avez pas de constructeur qui permet cela. Faites un constructeur pour votre classe Benuzer et faites-la de la manière habituelle. Sélectionnez Nouveau Benuzer (Mycol, MyCol2, etc.)



25
votes

Voici une expression de requête: xxx pré>

ou en notation de point: p> xxx pré>

Notez que cela renvoie une liste d'un type anonyme plutôt que des instances de Benutzer code>. Personnellement, je préfère cette approche sur la création d'une liste d'instances partiellement peuplées, car toute personne traitant des cas partiels doit vérifier si elles sont venues de savoir ce qui sera vraiment là. P>

EDIT: si vous êtes vraiment Voulez-vous construire des instances de Benutzer code>, et Linq ne vous permet pas de le faire dans une requête (je ne sais pas pourquoi) vous pouvez toujours faire: p>

List<Benutzer> users = dc.Benutzer
    .Select(a => new { a.Name, a.Age, a.Occupation })
    .AsEnumerable() // Forces the rest of the query to execute locally
    .Select(x => new Benutzer { Name = x.Name, Age = x.Age, 
                                Occupation = x.Occupation })
    .ToList();


3 commentaires

Que voulez-vous dire par "Typisite"?


Je veux que le type soit Benuzer, pas anonyme.


Vous pouvez si vous fournissez Benutzer dispose de constructeur sans paramètre et de setters publics pour les propriétés souhaitées. Ou et constructeur qui correspond au même but.



1
votes

Essayez: XXX

Mais maintenant, vous avez maintenant une liste d'objets anonymes non des objets BENUTZER.


0 commentaires