zapytanie lambda lub linq

zapytanie lambda lub linq
WC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:5
0

jak napisać zapytanie w linq lub lambda aby pobrać 10 najnowzych rekordów i jednocześnie wszystkie kóre pewną kolumne typu bool mają watrości przypisane na fales, do tych 10 wliczają się też te z wartością we wspomianym polu na fales więc wynik zapytania może być np: 12 rekordów z czego 10 jest najnowszych i powiedzmy 5 z wartością fales w określonym polu czyli 3 mają pole o wartości fales i jednocześnie są w dziecięciu najnowszych

Sarrus
fales fsocho fsodzi? :P
0

Pobierz dziesięć najnowszych dorzuć do tego te co mają booleana ustawionego jak chcesz z wykluczeniem tych d dziesięciu najnowszych.

Sarrus
  • Rejestracja:około 14 lat
  • Ostatnio:6 dni
  • Postów:2512
0

Coś takiego (pisane bez IDE):

Kopiuj
var tenNewest = list.OrderByDescending(o => o.Date).Take(10);
var falsyCount = tenNewest.Count(o => !o.Prop);
var result = tenNewest.Union(list.Skip(10).Where(o => !o.Prop).Take(10 - falsyCount));

Wypróbuj - błędy niewykluczone :P

edytowany 1x, ostatnio: Sarrus
NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
0

@Sarrus Chyba zrozumiałam inaczej. Ty pod koniec bierzesz tyle elementów spoza pierwszej dziesiątki, żeby w wyniku było 10 "fałszywych". Według mnie chodziło o to, żeby spoza pierwszej dziesiątki wziąć wszystkie fałszywe, więc...

Kopiuj
var tenNewest = list.OrderByDescending(o => o.Date).Take(10);
var result = tenNewest.Union(list.Skip(10).Where(o => !o.Prop));

albo tak:

Kopiuj
var orderedByDate = list.OrderByDescending(o => o.Date);
var result = orderedByDate.Where((item, index) => !item.BoolColumn || index < 10);

(konto nieaktywne)
Sarrus
yhm możesz mieć rację ;)
0

wystarczy:

Kopiuj
		var top = data
		    .OrderBy(x => x.Id)
		    .Take(10)
		    .Union(data.Where(x => !x.Prop))
		    .ToList();

union nie doda dwa razy tego samego elementu. Jeżeli chcemy zmienić działanie union to wystarczy zaimplementować i podać do Union interfejs IEqualityComparer lub zaimplementować wewnątrz klasy metodę Equals

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 4 godziny
0

Zwracam uwagę, że (przy odpowiednio dużej kolekcji) połączenie Order i Take by wziąć n skrajnych elementów będzie dużo wolniejsze niż mogłoby być, bo niepotrzebnie sortuje się całą kolekcję.

NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
0

Ale jak niepotrzebnie, jeśli trzeba wziąć elementy najjakieś?


(konto nieaktywne)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.