Devo selezionare 1000 record distinti usando LINQ. Ma quando vedo la query generata ci vogliono 1000 record e si applica distinti rispetto a quel risultato.Query linq Take() ha la precedenza su Distinct()?
IQueryable<TestClass> resultSet = (from w in ......).Distinct().Take(1000);
dove la mia TestClass sarebbe come,
public TestClass
{
public string TestPRop { get; set; }
//..has some 20 properties
}
Qualsiasi modo per risolvere questo per ottenere distinte applicata per il gruppo di risultati e poi prendere 1000 dal risultato distinta set?
Hai provato ad aggiungere "Salta (0)'? Forse questo creerà una query "offset fetch next" e non una top n. –
Hai provato a utilizzare un operatore di gruppo invece che distinto per vedere se questo influenza l'ordine delle operazioni? –
Prova 'var subquery = (da w in ...). Distinct();' e quindi 'result = (da s in sottoquery dove 1 == 1 seleziona s) .Take (1000);'. per vedere se questo costringe il distinto a far parte di una subquery. – juharr