C# 找到列表中没有的号码
我需要找到列表中没有的号码。它可以是负值或正值。请看下表:C# 找到列表中没有的号码,c#,sql,sql-server,C#,Sql,Sql Server,我需要找到列表中没有的号码。它可以是负值或正值。请看下表: +----+--------+---------------------+ | id | sorder | Name | +----+--------+---------------------+ | 1 | 2 | Chevy | +----+--------+---------------------+ | 2 | 78 | Michilin
+----+--------+---------------------+
| id | sorder | Name |
+----+--------+---------------------+
| 1 | 2 | Chevy |
+----+--------+---------------------+
| 2 | 78 | Michilin |
+----+--------+---------------------+
| 3 | -34 | XM |
+----+--------+---------------------+
| 4 | 97 | Manual Transmission |
+----+--------+---------------------+
| 5 | 3911 | Halogen |
+----+--------+---------------------+
给定此查询结果,我必须找到不在排序中的任何数字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 |
+----+--------+---------------------+
假设您有一个列表
,您可以执行以下任一操作
选项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;
}
请提供所需结果您可以找到最大值并添加1…从何处获取690 Valvoline 5w30
?您所需的结果集包括给定结果集中的所有数字,但您说您想要任何不在“排序”中的数字?为什么不忽略给定的列表并选择整个表?抱歉,解释有限。基本上,我试图给sorder分配一个临时值。我不能使用max+1,因为另一个线程可能会指定该值。更糟糕的是,我不能锁定表,所以我不能使用max。我在想也许我可以从-32B和32B中选择一个随机数。但我不确定这一数字多久会发生冲突。我估计每个数据集不超过1000条记录。