2010-09-15 3 views
4

J'ai un DataContext (db) qui peut accéder aux tables de ma base de données SQL Express, à partir de laquelle je voudrais extraire seulement trois des champs multiples de la table tblItem:Sélection de plusieurs champs à partir d'une table à l'aide des expressions Linq et Lambda

// this does not work - what is the correct way to do it? 
var items = db.tblItems.Select(i => i.id && i.name && i.totalAmount); 

L'intention est de les cracher dans un fichier csv (séparés par des virgules). Est-ce un var le meilleur moyen de le faire?

Répondre

11

Vous devez utiliser un objet anomynous pour cela:

var items = db.tblItems.Select(i => 
      new { 
        ID = i.id, 
        Name = i.name, 
        TotalAmount = i.totalAmount 
       }); 

Vous pouvez itérer sur items comme sur toute autre collection:

foreach(var item in items) 
{ 
    //do stuff 
} 
5

Si par "un var" vous voulez dire un type anonyme, alors probablement:

var items = db.tblItems.Select(i => new { i.id, i.name, i.totalAmount }); 
3

Oui, soit utiliser un type anonyme comme

var items = 
db.tblItems.Select(i => 
new 
{ 
i.id, 
i.name, 
i.totalAmount, 
}); 

Ou si vous avez une classe, utilisez-la à la place.

var items = 
    db.tblItems.Select(i => 
    new ItemsClass() //Or whatever 
    { 
    Id = i.id, 
    Name = i.name, 
    TotalAmount = i.totalAmount, 
    }); 
Questions connexes