C# 从名称数组中获取下一个可用ID
我有3个字符串,每个字符串包含在一个数组中C# 从名称数组中获取下一个可用ID,c#,c#-4.0,C#,C# 4.0,我有3个字符串,每个字符串包含在一个数组中 string[]folderArray={“1-名称”、“4-另一名称”、“3-另一名称”} 我需要获得下一个可用的ID(文件夹编号) 例如,所需的ID为2,因为它会看到数组中缺少“2”ID 这个问题的PHP副本可以在上找到,请尝试以下代码 string[] folderArray = { "1 - Name", "4 - Another name", "3 - Another name" }; var listId = new Lis
string[]folderArray={“1-名称”、“4-另一名称”、“3-另一名称”}
我需要获得下一个可用的ID(文件夹编号)
例如,所需的ID为2,因为它会看到数组中缺少“2”ID
这个问题的PHP副本可以在上找到,请尝试以下代码
string[] folderArray = { "1 - Name", "4 - Another name", "3 - Another name" };
var listId = new List<int>();
foreach (var item in folderArray)
{
var tempId = 0;
if (int.TryParse(item.Split('-')[0].Trim(), out tempId))
listId.Add(tempId);
}
listId.Sort();
for (var i=1 ;i<listId.Count ;i++)
{
if(listId[i]-listId[i-1]>1)
{
Console.WriteLine(listId[i-1]+1);
break;
}
}
string[]folderArray={“1-名称”、“4-另一名称”、“3-另一名称”};
var listId=新列表();
foreach(文件夹阵列中的var项目)
{
var-tempId=0;
if(int.TryParse(item.Split('-')[0].Trim(),out tempId))
添加(tempId);
}
Sort();
对于(var i=1;i1)
{
控制台写入线(列表ID[i-1]+1);
打破
}
}
试试这段代码
string[] folderArray = { "1 - Name", "4 - Another name", "3 - Another name" };
var listId = new List<int>();
foreach (var item in folderArray)
{
var tempId = 0;
if (int.TryParse(item.Split('-')[0].Trim(), out tempId))
listId.Add(tempId);
}
listId.Sort();
for (var i=1 ;i<listId.Count ;i++)
{
if(listId[i]-listId[i-1]>1)
{
Console.WriteLine(listId[i-1]+1);
break;
}
}
string[]folderArray={“1-名称”、“4-另一名称”、“3-另一名称”};
var listId=新列表();
foreach(文件夹阵列中的var项目)
{
var-tempId=0;
if(int.TryParse(item.Split('-')[0].Trim(),out tempId))
添加(tempId);
}
Sort();
对于(var i=1;i1)
{
控制台写入线(列表ID[i-1]+1);
打破
}
}
试试这段代码
string[] folderArray = { "1 - Name", "4 - Another name", "3 - Another name" };
var listId = new List<int>();
foreach (var item in folderArray)
{
var tempId = 0;
if (int.TryParse(item.Split('-')[0].Trim(), out tempId))
listId.Add(tempId);
}
listId.Sort();
for (var i=1 ;i<listId.Count ;i++)
{
if(listId[i]-listId[i-1]>1)
{
Console.WriteLine(listId[i-1]+1);
break;
}
}
string[]folderArray={“1-名称”、“4-另一名称”、“3-另一名称”};
var listId=新列表();
foreach(文件夹阵列中的var项目)
{
var-tempId=0;
if(int.TryParse(item.Split('-')[0].Trim(),out tempId))
添加(tempId);
}
Sort();
对于(var i=1;i1)
{
控制台写入线(列表ID[i-1]+1);
打破
}
}
试试这段代码
string[] folderArray = { "1 - Name", "4 - Another name", "3 - Another name" };
var listId = new List<int>();
foreach (var item in folderArray)
{
var tempId = 0;
if (int.TryParse(item.Split('-')[0].Trim(), out tempId))
listId.Add(tempId);
}
listId.Sort();
for (var i=1 ;i<listId.Count ;i++)
{
if(listId[i]-listId[i-1]>1)
{
Console.WriteLine(listId[i-1]+1);
break;
}
}
string[]folderArray={“1-名称”、“4-另一名称”、“3-另一名称”};
var listId=新列表();
foreach(文件夹阵列中的var项目)
{
var-tempId=0;
if(int.TryParse(item.Split('-')[0].Trim(),out tempId))
添加(tempId);
}
Sort();
对于(var i=1;i1)
{
控制台写入线(列表ID[i-1]+1);
打破
}
}
我不会这样做,但如果您希望与您链接的PHP解决方案中的相同:
var missing = Enumerable.Range(1, folderArray.Length).Except(folderArray.Select(f => int.Parse(f.Split('-').First()))).First();
注:这是假设折叠数组中的项目始终为
- “[number]-[some string]”
没有空字符串,没有空值,等等。我不会这样做,但是如果您希望与链接的PHP解决方案中的相同,请执行以下操作:
var missing = Enumerable.Range(1, folderArray.Length).Except(folderArray.Select(f => int.Parse(f.Split('-').First()))).First();
注:这是假设折叠数组中的项目始终为
- “[number]-[some string]”
没有空字符串,没有空值,等等。我不会这样做,但是如果您希望与链接的PHP解决方案中的相同,请执行以下操作:
var missing = Enumerable.Range(1, folderArray.Length).Except(folderArray.Select(f => int.Parse(f.Split('-').First()))).First();
注:这是假设折叠数组中的项目始终为
- “[number]-[some string]”
没有空字符串,没有空值,等等。我不会这样做,但是如果您希望与链接的PHP解决方案中的相同,请执行以下操作:
var missing = Enumerable.Range(1, folderArray.Length).Except(folderArray.Select(f => int.Parse(f.Split('-').First()))).First();
注:这是假设折叠数组中的项目始终为
- “[number]-[some string]”
无空字符串、无空值等。请考虑以下几点:
- 不要使用字符串数组,请使用已排序的集合(例如,
)和正确的SortedList
(尝试IComparer
)比较器。默认值
- 然后按顺序迭代并找到第一个间隙,间隙表示:
-然后下一个ID是list.ContainsKey(n)==true&&list.ContainsKey(n+1)==false
n+1
- 为了提高性能,您可以记住上次给呼叫者的ID(如果支持的话,也可以记住上次删除的文件夹),然后从那里开始搜索下一个ID请求
我想将此作为一条评论发布,但它不适用于格式:-/。请考虑以下几点:
- 不要使用字符串数组,请使用已排序的集合(例如,
)和正确的SortedList
(尝试IComparer
)比较器。默认值
- 然后按顺序迭代并找到第一个间隙,间隙表示:
-然后下一个ID是list.ContainsKey(n)==true&&list.ContainsKey(n+1)==false
n+1
- 为了提高性能,您可以记住上次给呼叫者的ID(如果支持的话,也可以记住上次删除的文件夹),然后从那里开始搜索下一个ID请求
我想将此作为一条评论发布,但它不适用于格式:-/。请考虑以下几点:
- 不要使用字符串数组,请使用已排序的集合(例如,
)和正确的SortedList
(尝试IComparer
)比较器。默认值
- 然后按顺序迭代并找到第一个间隙,间隙表示:
-然后下一个ID是list.ContainsKey(n)==true&&list.ContainsKey(n+1)==false
n+1
- 为了提高性能,您可以记住上次给呼叫者的ID(如果支持的话,也可以记住上次删除的文件夹),然后从那里开始搜索下一个ID请求
我想将此作为一条评论发布,但它不适用于格式:-/。请考虑以下几点:
- 不要使用字符串数组,请使用已排序的集合(例如,
)和正确的SortedList
(尝试IComparer
)比较器。默认值
- 然后按顺序迭代并找到第一个间隙,间隙表示:
-然后下一个ID是list.ContainsKey(n)==true&&list.ContainsKey(n+1)==false
n+1
- 为了提高性能,您可以记住上次给来电者的ID(或上次删除的文件夹)