我需要找到列表中没有的任何数字。它可以是负值或正值。看看下表:
+----+--------+---------------------+
| id | sorder | Name |
+----+--------+---------------------+
| 1 | 2 | Chevy |
+----+--------+---------------------+
| 2 | 78 | Michilin |
+----+--------+---------------------+
| 3 | -34 | XM |
+----+--------+---------------------+
| 4 | 97 | Manual Transmission |
+----+--------+---------------------+
| 5 | 3911 | Halogen |
+----+--------+---------------------+
鉴于此查询结果,我必须找到sorder
内没有的任何数字。 sorder
可以是任何负数或正数。如果可能的话,我想使用sql来查找结果。这是我想要的结果集:
+----+--------+---------------------+
| id | sorder | Name |
+----+--------+---------------------+
| 1 | 2 | Chevy |
+----+--------+---------------------+
| 2 | 78 | Michilin |
+----+--------+---------------------+
| 3 | -34 | XM |
+----+--------+---------------------+
| 4 | 97 | Manual Transmission |
+----+--------+---------------------+
| 5 | 3911 | Halogen |
+----+--------+---------------------+
| 6 | 690 | Valvoline 5w30 |
+----+--------+---------------------+
答案 0 :(得分:1)
假设你有一个List
,你可以做其中任何一个。
选项1
正如 Jon Skeet 在列表中指出的那样,取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;
}