2016-04-16 1 views
-4

リストにない数字を見つける必要があります。負または正の値にすることができます。私はsorderにない任意の番号を見つける必要があり、このクエリの結果を考えるとリストにない数字を見つける

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

:下の表を見てみましょう。 sorderには、任意の負の数または正の数を指定できます。可能であれば、私は結果を見つけるためにSQLを使用したいと思います。ここに私の希望の結果セットです:あなたはListを持っていると仮定すると

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

あなただけの最大値を見つけて追加することができ – lad2025

+1

希望ResultSetを提供してください1 ... –

+1

どこから '690 Valvolineの5w30'を取得しますか? – Squirrel

答えて

1

、あなたはこれらのいずれかを行うことができます。

オプション1

ジョンスキートがリストに指摘したように、Maxを取り、追加1.

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

オプション2

あなたが解決策を探している場合最小の数から最小の利用可能なインデックスを見つけるには、これを行うことができます。

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; 
} 
関連する問題