2012-02-09 33 views
21

mediante LINQ para consultar una DataTable vuelve el error siguiente: CS0117: 'DataSet1.map DataTable' no contiene una definición para ProyectoDataTable no contiene definición para AsEnumerable

'AsEnumerable' incluye referencia para System.Data. Datasetextensions.

Aquí está el código.

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; 
} 

ejecutarlo w/out AsEnumerable() resulta en

var query1 = from mfg_nm in DataSet1.mapDataTable 

        select mfg_nm; 

CS1660: No se puede convertir la expresión lambda al tipo 'cadena' porque no es un tipo de delegado

gracias por adelantado por su ayuda

Respuesta

52

La method you want está en el espacio de nombres System.Data, por lo que la directiva using está bien, pero también necesita una referencia al ensamblaje System.Data.DataSetExtensions. ¿Está seguro tiene esa referencia como conjunto de referencia?

No está claro por qué tienes una directiva de uso para un System.Data.DataSetExtensionsnamespace - ¿Eso no provoca un error?

¿Cuál es el error exacto con la llamada AsEnumerable()? (Me sorprende el error que está recibiendo con la segunda forma ... ese no es el error que esperaba).

+0

Gracias por la respuesta rápida. Se eliminó System.data.datasetextensions. Conjunto confirmado System.data.datasetextensions. Form web.config: user1169290

+1

@ user1169290: ¿No puede simplemente agregarlo bajo las referencias? No sé si tenerlo en web.config hace la diferencia ... –

+0

así es como lo agregué, creo que agregó las líneas al archivo de configuración – user1169290

7

En todos los casos en que esto sucede, la referencia a System.Data.DataSetExtensions. Dll faltaba. En caso de duda, intente crear un proyecto simple de consola que tenga como objetivo .NET 4 con una referencia a System.Data.DataSetExtensions.dll, para verificar que la adición de la referencia realmente funcione.

También tenga en cuenta que solo necesita utilizar el espacio de nombres System.Data.

BTW mapDataTable es una DataTable, ¿verdad?

+0

Sí, mapdatatable es una tabla de datos – user1169290

2

búsqueda de Google "System.Data.DataTable no contiene una definición para AsEnumerable" me trajo aquí, y mi problema faltaba:

using System.Data; 

Debido a mi poner en práctica el mensaje de error fue un poco engañoso. Por lo tanto, mi respuesta a esta pregunta. Código era como ...

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

Una vez traté de declarar explícitamente el DataTable, se hizo obvio que me estaba perdiendo la instrucción using.

+0

Solo quiero agregar que también deberíamos tener System.Linq – Carol

Cuestiones relacionadas