Jimbo
Jimbo

Reputation: 22964

Selecting Many Fields From a Table using Linq and Lambda Expressions

I have a DataContext (db) that can access the tables in my SQL Express database, from which I would like to extract only three of the multiple fields in the tblItem table:

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

The intention is to spit these out into a csv file (comma separated). Is a var the best way to do this?

Upvotes: 4

Views: 31036

Answers (3)

DaveShaw
DaveShaw

Reputation: 52788

Yes, either use an anonymous type like so

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

Or if you have a class use it instead.

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

Upvotes: 3

Femaref
Femaref

Reputation: 61437

You will have to use an anomynous object for this:

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

You can iterate over items like over any other collection:

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

Upvotes: 11

Jon Skeet
Jon Skeet

Reputation: 1500485

If by "a var" you mean an anonymous type, then probably:

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

Upvotes: 5

Related Questions