Domanda

Ho un requisito per estrarre un sottoinsieme distinto di righe da una DataTable e ho pensato che LINQ2DataSet potrebbe essere un modo utile e pulito per farlo, tuttavia sembra che non sia possibile identificare semplicemente le righe di ritorno da una query LINQ2DS come segue

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>("...

quando inizio a ricevere errori dopo la prima virgola.

È un presupposto corretto e come potrei aggirarlo per restituire un sottoinsieme di colonne dal set di dati a cui posso applicare un metodo Distinct ()?

È stato utile?

Soluzione

Hai dimenticato la nuova istruzione e i nomi dei campi:

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

Puoi anche dichiarare esplicitamente che stai per usare 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) ha alcune buone informazioni su LINQ (parla di LINQ to SQL, ma la maggior parte si applica indipendentemente).

Quindi applica la clausola 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;

Quindi inseriscilo in un elenco o ripetilo su di esso. Nulla verrà selezionato / distinto / ecc finché non verrà eseguito qualcosa di simile a quanto segue:

var list = result.ToList()
foreach(var item in result) {}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top