LINQ to SQL Select Distinct durch Mehrere Spalten und die gesamte Entität zurück
Ich arbeite mit einer Dritten Datenbank und müssen wählen Sie einen Satz von Daten, die für den spezifischen Markt, ich bin auf der Suche in. Die Daten sind die gleichen für jeden Markt, so dass es überflüssig ist, ziehen Sie es alle, und ich will auch nicht zu fest aus einer Logik, um es, wie wir die Zusammenarbeit mit dem Lieferanten, um das Problem zu beheben, aber wir brauchen eine Korrektur, wird die Arbeit mit dem Hersteller beheben, sowie die Möglichkeit die Datenbank ist derzeit als könnte es einige Zeit dauern, bis die thier Update live geht.
Will ich nicht zu der Gruppe von so etwas möchte ich, um die Daten auf der untersten Ebene, aber ich will keine redundanten Daten. Meine aktuelle Abfrage sieht wie folgt aus...
determinantData = (from x in dbContext.Datas
where x.Bar.Name.Equals(barName) &&
x.Something.Name.Equals(someName) &&
FooIds.Contains(x.Foo.Id) &&
x.Date >= startDate &&
x.Date <= endDate
select x).Distinct();
Dieser nicht tut, was ich erwarte. Ich möchte wählen Sie die eindeutige Datensätze durch die drei Eigenschaften, sagen Foo
, Bar
, und Something
aber wieder das gesamte Objekt. Wie kann ich dies mit LINQ?
Ich merke dies, ich wusste einfach nicht, wie zu Fragen, es in einem besseren Weg.. im Grunde will ich nicht zu aggregieren, die anderen Daten, die nicht Teil der Unterscheidung, aber ich will noch auswählen, dass die Daten.
InformationsquelleAutor shuniar | 2011-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
group by
mit den Eigenschaften, die Sie wollen, zu unterscheiden, dann wählen Sie das erste Element jeder Gruppe:tatsächlich, nach der Ausführung ein paar tests, es ist näher an 3 Minuten um den Bericht zu generieren.
eine alternative ist die Nutzung
AsEnumerable()
zu tun, die Gruppierung im Speicher auf die Daten, die Sie abgestimmt. Dann können Sie auchDistinctBy
von der MoreLinq Projekt: code.google.com/p/morelinq/source/browse/trunk/MoreLinq/...Ich landete mit der DistinctBy Methode von MoreLinq und es beschleunigt meine Abfrage. Ich musste
ToList()
meine Daten vor dem Anruf, aber da war ich mit den "anderen Daten Leser schon verbunden..." - Ausnahme. Aber trotzdem, viel schneller als ursprünglich. Markiert als Antwort, danke!InformationsquelleAutor BrokenGlass