2012-02-09 11 views
21

utilizzando LINQ per interrogare un rendimento DataTable il seguente errore: CS0117: 'DataSet1.map DataTable' non contiene una definizione per 'AsEnumerable' ProgettoDataTable non contiene definizione per AsEnumerable

include riferimento per System.Data. Datasetextensions.

Ecco il codice.

using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Configuration; 
using System.Reflection; 
using System.Data; 
using System.Linq; 
using System.Data.Linq; 
using System.Data.Common; 
using System.Data.DataSetExtensions; 
using System.Linq.Expressions; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Data.SqlClient; 

protected void Page_Load(object sender, EventArgs e) 
    { 
     var query1 = from mfg_nm in DataSet1.mapDataTable.AsEnumerable() 

        select mfg_nm; 
} 

eseguirlo w/out AsEnumerable() si traduce in

var query1 = from mfg_nm in DataSet1.mapDataTable 

        select mfg_nm; 

CS1660: Impossibile convertire espressione lambda al tipo 'stringa' perché non è un tipo delegato

grazie in anticipo per il tuo aiuto

risposta

52

Il method you want è nello spazio dei nomi System.Data, quindi la direttiva using va bene, ma è anche necessario un riferimento all'assembly System.Data.DataSetExtensions. Sei sicuro hai questo riferimento come riferimento ?

Non è chiaro il motivo per cui si utilizza una direttiva per uno spazio dei nomi System.Data.DataSetExtensions - non viene generato un errore?

Qual è l'errore esatto con la chiamata AsEnumerable()? (Sono sorpreso dall'errore che si ottiene con il secondo modulo ... non è l'errore che mi sarei aspettato.)

+0

Grazie per la risposta rapida. Rimosso System.data.datasetextensions. Assembly System.data.datasetextensions confermato. Form web.config: user1169290

+1

@ user1169290: Non puoi semplicemente aggiungerlo sotto i riferimenti? Non so se averlo sotto web.config fa la differenza ... –

+0

è così che l'ho aggiunto, penso che abbia aggiunto le righe al file di configurazione – user1169290

7

In tutti i casi in cui ciò accade, il riferimento a System.Data.DataSetExtensions. mancava la dll. In caso di dubbi, provare a creare un progetto di console semplice che abbia come destinazione .NET 4 con un riferimento a System.Data.DataSetExtensions.dll, per verificare che l'aggiunta del riferimento funzioni effettivamente.

Si noti inoltre che è necessario utilizzare solo lo spazio dei nomi System.Data.

BTW mapDataTable è un DataTable, giusto?

+0

Sì, mapdatatable è un datatable – user1169290

2

Google ricerca "System.Data.DataTable non contiene una definizione per AsEnumerable" mi ha portato qui, e il mio problema era mancante:

using System.Data; 

A causa della mia implementare il messaggio di errore è stato un po 'fuorviante. Quindi, la mia risposta a questa domanda. Codice era come ...

public List<mytype> MyMethod(params) { 
    return new mynamespace.myclasslib.myclass().GetDataTable(params).AsEnumerable() 
     .etc 
} 

Una volta ho provato a dichiarare esplicitamente DataTable, è diventato evidente che mi mancava l'istruzione using.

+0

Voglio solo aggiungere che dovremmo avere System.Linq – Carol