2016-04-16 6 views
-4

Ich muss eine beliebige Nummer nicht in der Liste finden. Es kann ein negativer oder ein positiver Wert sein. Werfen Sie einen Blick auf die Tabelle unten:Finden Sie eine beliebige Nummer nicht in der Liste

+----+--------+---------------------+ 
| id | sorder | Name    | 
+----+--------+---------------------+ 
| 1 | 2  | Chevy    | 
+----+--------+---------------------+ 
| 2 | 78  | Michilin   | 
+----+--------+---------------------+ 
| 3 | -34 | XM     | 
+----+--------+---------------------+ 
| 4 | 97  | Manual Transmission | 
+----+--------+---------------------+ 
| 5 | 3911 | Halogen    | 
+----+--------+---------------------+ 

dieses Abfrageergebnis Da ich eine beliebige Anzahl finden muß, die nicht in sorder ist. sorder kann jede negative oder positive Zahl sein. Wenn möglich, möchte ich sql verwenden, um das Ergebnis zu finden. Hier ist mein Wunsch des Suchresultates ist:

+----+--------+---------------------+ 
| id | sorder | Name    | 
+----+--------+---------------------+ 
| 1 | 2  | Chevy    | 
+----+--------+---------------------+ 
| 2 | 78  | Michilin   | 
+----+--------+---------------------+ 
| 3 | -34 | XM     | 
+----+--------+---------------------+ 
| 4 | 97  | Manual Transmission | 
+----+--------+---------------------+ 
| 5 | 3911 | Halogen    | 
+----+--------+---------------------+ 
| 6 | 690 | Valvoline 5w30  | 
+----+--------+---------------------+ 
+2

Bitte gewünschte resultset bieten – lad2025

+1

Sie nur das Maximum finden konnte, und fügen Sie 1 ... –

+1

wo aus der '690 Valvoline 5w30' zu bekommen? – Squirrel

Antwort

1

Vorausgesetzt Sie haben eine List haben, können Sie entweder von diesen zu tun.

Option 1

Als Jon Skeet in der Liste darauf, nehmen Sie die Max und fügen 1.

int maxSOrder = objecList.Max(s=>s.sorder); 
int nextIndex = maxSOrder +1; 

Option 2

Wenn Sie nach einer Lösung suchen Um den minimal verfügbaren Index von der Mindestanzahl zu finden, könnten Sie dies tun.

int minSOrder = objecList.Min(s=>s.sorder); 
int maxSOrder = objecList.Max(s=>s.sorder); 
int minNotInList = Enumerable.Range(minSOrder, maxSOrder-minSOrder) 
          .FirstOrDefault(f=> !objectList.Any(o=>o.sorder == f); 

if(minNotInList ==0) // just fallback logic, when default is used 
{ 
    minNotInList = maxSOrder +1; 
} 
Verwandte Themen