Pregunta

Tengo un requisito para extraer un subconjunto distinto de filas de una DataTable, y pensé que LINQ2DataSets puede ser una forma útil y limpia de hacerlo, sin embargo, parece que no es posible identificar simplemente las filas de retorno de una consulta LINQ2DS como sigue

var result = from r in fips.AsEnumerable() select
r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
r.Field<string>("PROCESS_SUB_GROUP_NAME"),
r.Field<string>("...

cuando empiezo a recibir errores después de la primera coma.

¿Es esta una suposición correcta, y cómo podría evitarlo para devolver un subconjunto de columnas del conjunto de datos al que puedo aplicar un método Distinct ()?

¿Fue útil?

Solución

Olvidó la nueva declaración y los nombres de campo:

var result = from r 
    in fips.AsEnumerable() 
    select new
    {
        FacProcess = r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
        GroupName = r.Field<string>("PROCESS_SUB_GROUP_NAME"),
        Item3 = r.Field<string>("Item3")
    };

También puede declarar explícitamente que va a usar un tipo:

var result = from r 
    in fips.AsEnumerable() 
    select new MyType("InitClassParams") 
    {
        FacProcess = r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
        GroupName = r.Field<string>("PROCESS_SUB_GROUP_NAME"),
        Item3 = r.Field<string>("Item3")
    };

Scott Guthrie (VP Developer Devision, Microsoft) tiene buena información sobre LINQ (habla de LINQ to SQL, pero la mayoría se aplica independientemente).

Luego aplique la cláusula distinta:

var result = from r 
    in fips.AsEnumerable() 
    select new
    {
        FacProcess = r.Field<string>("FACILITY_PROCESS_SUB_GROUP_CODE"),
        GroupName = r.Field<string>("PROCESS_SUB_GROUP_NAME"),
        Item3 = r.Field<string>("Item3")
    }
    distinct;

Luego póngalo en una lista o repítalo. No se seleccionará / distinguirá / etc hasta que se ejecute algo como lo siguiente:

var list = result.ToList()
foreach(var item in result) {}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top